【JAVA】JAVA快速入门(长期维护)

下面是java的一些入门基础知识,有需要借鉴即可。
课程:B站黑马程序员,JAVA入门LINK

一、初识JAVA

1.java概述

  • 概念:java是由sun公司研发,在2009年被oracle收购,祖师爷詹姆斯·高斯林,是一种高级编程语言
    -在这里插入图片描述
  • 特性:可移植性质
  • java体系:Java SE(核心) && Java EE(企业级开发) && Java ME
  • Java产品:JDK(Java 开发工具包),注:LTS为长期支持版

目前的长期支持版有8、11、17

2.JAVA常用指令

在这里插入图片描述

  • cls 清屏
  • cd 进入目录
  • dir 列举当前目录文件
  • :切盘

3.编写第一个java程序

文件名称全英文,首字母大写,后缀java
在这里插入图片描述

4.path环境变量

意义:用于记录程序路径,方便在命令行任意位置进行调用

便于配置java版本的程序编译环境。

5.集成开发编译器:IDEA

在这里插入图片描述

二、JAVA基本语法

1.类型转换

①初步认识java中的类型:
在这里插入图片描述

②类型转换意义:处理不同类型的变量进行运算
③分类:

  • 自动转换
    -由高类型所决定
    -自动小范围转换为大范围的类型

  • 强制转换
    -类型自己决定,不过有丢失数据的风险
    在这里插入图片描述
    在这里插入图片描述

2.运算符

+连接符/加
-
*
/
%
++
+=自带强制转换
-=自带强制转换
*=自带强制转换
/=自带强制转换
%=自带强制转换
==
!=
>=
<=
>
<
&位运算符/逻辑与
&&
|位运算符/逻辑与
||
!
^位运算符/逻辑与
?:

注:&与&&的区别在于&&会短路。

3.API

  • 导包
  • 创建一个扫描器
  • 接收用户数据

4.程序流控制

①顺序结构

②分支结构

if
switch

注:switch仅支持byte、short、int、char,后来支持枚举(JDK5)、String(JDK7)

③循环结构

while
for
do_while
continue
break;

5.数组

意义:存储同一类型的多个数据
格式分类:

  • 静态数组:type[] + name = new type[]{nums};
  • 动态数组:type[] + name = new type[length];

注意,动态数组默认值为0

在这里插入图片描述

6.方法(method)

①定义:方法(函数):一种语法结构,将一段代码封装,方便重复调用
②语法格式
在这里插入图片描述

在java中,返回类型要明确指出且接收一致。

在这里插入图片描述

④下面是一些方法案例:

public class test4_2 {public static void main(String[] args) {//1.计算1——n的和int sum = sumNumbers(10);System.out.println(sum);//2.判断奇偶String a = SelectNumbers(8);System.out.println(a);}public static int sumNumbers(int n){int i = 0;int sum = 0;for(i = 1;i<=n;i++){sum+=i;}return sum;}public static String SelectNumbers(int m){if(m%2==0){return "even";}else {return "odd";}}}

⑤拓展知识:方法重载
一个类中,出现多个方法名称相同,但是形参列表不同的方法
区分形参列表不同:形参个数、类型、顺序(不关心名称)
意义:便于处理同一类业务,提供多种解决方案。

⑥拓展知识:参数传递机制
java的参数传递机制,一般来说,分为基本值传递(基本类型)和地址传递(引用类型)。

7.简单练习

①买飞机票

在这里插入图片描述

public static double buyTicket(int month,double money,String manner){if(month>=5 && month<=10){//旺季if(manner == "头等舱"){money*=0.9;}else {money*=0.85;}}else {//淡季if(manner == "头等舱"){money*=0.7;}else {money*=0.65;}}return money;}

②开发验证码

在这里插入图片描述

public static String creatCaptcha(int number){String captcha = "";Random r = new Random();for(int i = 0;i<number;i++){int type = r.nextInt(3);//[0,3)switch(type){case 0://生成小字母char ch1 = (char)(r.nextInt(26)+65);captcha+=ch1;break;case 1://生成大写字母char ch2 = (char)(r.nextInt(26)+97);captcha+=ch2;break;case 2://生成数字int num = r.nextInt(9);captcha+=num;break;}}return captcha;}

要点提示:
Random r = new Random();
char ch1 = (char)(r.nextInt(26)+65);

③评委打分

在这里插入图片描述

    public static double JudgesScore(int numbers){int[] arr = new int[numbers];int max = 0;int min = 100;int average = 0;Scanner sc = new Scanner(System.in);for(int i = 0;i<numbers;i++){int num = sc.nextInt();arr[i] = num;if(arr[i]<min){min = arr[i];}if(arr[i]>max){max = arr[i];}average+=arr[i];}average-=(max+min);average/=(numbers-2);return average;}
}

重点提示:
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();

④数字加密

在这里插入图片描述

private static String DigitalEncryption(int number) {//先将数字每位数字分开,放到数组中int[] nums = Separate(number);//对每个数字+5for(int i = 0;i<4;i++){nums[i]+=5;nums[i]%=10;}//将所有数字顺序反转Swap(nums,0,3);String str = "";for(int i = 0;i<4;i++){str+=nums[i];}return str;}private static void Swap(int[] arr, int start, int end) {while(start<end){int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}

⑤数组拷贝

在这里插入图片描述

private static int[] Copyarray(int[] arr) {int[] arrcopy = arr;int i = 0;for(i = 0;i<arrcopy.length;i++){System.out.print(arrcopy[i] + " ");}System.out.println();return arrcopy;}

⑥抢红包

在这里插入图片描述

private static void GrabREnvelope() {Scanner sc = new Scanner(System.in);Random r = new Random();int[] arr = new int[]{9,666,188,520,99999};int j = 0;for(j = 0;j<5;j++){System.out.println("请您输入一个数值进行抽奖");sc.nextInt();while(true){//随机值int i = r.nextInt(5);if(arr[i]!=0){System.out.println("恭喜您抽到了" + arr[i] + "元");arr[i] = 0;break;}else {continue;}}}System.out.println("抽奖结束,敬请待续");}

⑦找素数

在这里插入图片描述

private static int findPrime1(int start, int end) {int i;int count = 0;int flag = 0;for(i = start;i<=end;i++){flag = 0;int q = 2;for(q=2;q<=i/2;q++){if(i%q==0){flag = 1;break;}}if(flag == 0){System.out.println(i + "是素数");count++;}}return count;}private static int findPrime2(int start, int end) {int i;int count = 0;OUT:for(i = start;i<=end;i++){int q = 2;for(q=2;q<=i/2;q++){if(i%q==0){continue OUT;}}System.out.println(i + "是素数");count++;}return count;}private static int findPrime3(int start, int end) {int i;int count = 0;for(i = 101;i<=200;i++){if(Check(i)){count++;System.out.println(i + "是素数");}}return count;}private static boolean Check(int data) {for(int i = 2;i<=data/2;i++){if(data%i==0){return false;}}return true;}

⑧打印乘法口诀表

private static void Multiplication() {int i;for(i = 1;i<=9;i++){int j;for(j = 1;j<=i;j++){System.out.print( j + "*" + i + "=" + (i*j) + " ");}System.out.println();}}

⑨打印三角形

 private static void Triangle(int n) {for(int i = 0;i<n;i++){//先打印空格for(int j = 0;j<n-i-1;j++){System.out.print(" ");}//打印形状for(int j = 0;j<2*i-1;j++){System.out.print("*");}System.out.println();}}

⑩双色球

在这里插入图片描述

private static void ComparativeJudgment(int[]arr1,int[]arr2) {int redcount = 0;int bluecount = 0;//统计红色蒙对的个数for(int i = 0;i<6;i++){for(int j = 0;j<6;j++){if(arr1[i] == arr2[i]){redcount++;break;}}}//统计蓝色蒙对的个数if(arr1[6] == arr2[6]){bluecount++;}if(redcount == 6 && bluecount == 1){System.out.println("恭喜您,中1奖了");}else if(redcount == 6 && bluecount == 0){System.out.println("恭喜您,中2奖了");}else if(redcount == 5 && bluecount == 1){System.out.println("恭喜您,中3奖了");}else if(redcount == 5 && bluecount == 0){System.out.println("恭喜您,中4奖了");}else if(redcount == 4 && bluecount == 1){System.out.println("恭喜您,中5奖了");}else if(redcount == 4 && bluecount == 0){System.out.println("恭喜您,中6奖了");}else if(redcount == 3 && bluecount == 1){System.out.println("恭喜您,中7奖了");}else if(redcount == 2 && bluecount == 1){System.out.println("恭喜您,中8奖了");}else if(redcount == 1 && bluecount == 1){System.out.println("恭喜您,中9奖了");}else if(redcount == 0 && bluecount == 1){System.out.println("恭喜您,中10奖了");}}public static int[] CreLuckNumbers() {Random r = new Random();int[] arr = new int[7];//红色球for(int i = 0;i < 6;i++){while(true){int number = r.nextInt(33)+1;if(Select(number,arr)){arr[i] = number;break;}}}//蓝色球int number = r.nextInt(16)+1;arr[6] = number;return arr;}private static void PrintArray(int[] arr) {for(int i = 0;i< arr.length;i++){System.out.print(arr[i]+ " ");}System.out.println();}public static int[] UserNumbers() {Scanner sc = new Scanner(System.in);int[] numbers = new int[7];int i = 1;//红球for(i = 0;i<6;i++){while(true){System.out.println("请输入您要选择的第" + (i+1) + "个双色球号码");int number = sc.nextInt();//判断是否在范围内&&是否重复if(number>=1&&number<=33&&Select(number,numbers)){numbers[i] = number;break;}System.out.println("您选择的号码重复/不在范围中,请重新选择第" + (i+1) + "个号码");}}//蓝色球while(true){System.out.println("请输入您要选择的蓝球号码是哪个(1-16):");int number = sc.nextInt();if(number>=1&&number<=16){numbers[6] = number;break;}System.out.println("您选择的号码重复了/不再范围中,请重新选择第红球号码");}return numbers;}private static boolean Select(int number,int[] numbers) {int i = 0;for(i = 0;i<6;i++){if(number == numbers[i]){return false;//重复的直接返回false}}return true;}

8.面向对象编程

①快速入门

在这里插入图片描述

  • 1.为什么设计类?
    符合人类的编程习惯,思维习惯。

  • 2.类的本质:
    实际上是一种特殊的数据结构,这种数据结构是一种待填的表格模板。
    在这里插入图片描述

  • 3.对象的设计由来在这里插入图片描述

  • 4.面向对象的注意事项

①.类名用的英文,首字母大写,驼峰模式
②.类中定义的变量/方法称为成员变量/成员方法
③.成员变量本身存在默认值
在这里插入图片描述
④.一个class类中只能有一个public修饰,且public修饰的类名必须成为代码的文件名称。
⑤.对象与对象之间相互独立,除非两个对象指向同一块空间
⑥.如果对象没有被变量引用,则对象会成为垃圾对象,由java中的垃圾回收机制自动回收空间

②面向对象在计算机中执行原理

在这里插入图片描述

判断引用类型变量:如果一个变量中存储的是一个对象的地址,称为引用类型变量。

③this:一个变量,用在对象本身的方法中,来拿到当前对象的地址。

在这里插入图片描述
this的意义:解决成员变量名称与成员方法形参名称冲突问题。
在这里插入图片描述

在这里插入图片描述
说白了,this是一个java内置的对象形参,用来接收创建的变量的地址的。

④构造器:一种特殊的方法

在这里插入图片描述
在这里插入图片描述
个人感觉就是方便调用的对象方法。我们在创建对象时候,可以方便调用里面的同名方法。
在这里插入图片描述

⑤封装

在这里插入图片描述

封装的规则:合理隐藏,合理暴露
在这里插入图片描述

⑥实体类

在这里插入图片描述
应用示例:
在这里插入图片描述

⑦综合案例

public class MovieData {private int id;private String name;private double price;private double score;private String director;private String actor;private String info;public MovieData(int id, String name, double price, double score, String director, String actor, String info) {this.id = id;this.name = name;this.price = price;this.score = score;this.director = director;this.actor = actor;this.info = info;}public MovieData() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}public String getDirector() {return director;}public void setDirector(String director) {this.director = director;}public String getActor() {return actor;}public void setActor(String actor) {this.actor = actor;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}
}
public class MovieOperation {MovieData[] movies = new MovieData[4];//功能1:一键展示所有电影的名称和价格信息public MovieOperation(MovieData[] movies) {this.movies = movies;}public void printAllInfo(MovieData[] movies){System.out.println("下面是所有电影的名称和价格信息:");for (int i = 0; i < 4; i++) {System.out.println("name:" + movies[i].getName());System.out.println("price" + movies[i].getPrice());}}
//功能2:查询某个id的详细信息public void printMovieInfo(int id){for (int i = 0; i <4 ; i++) {if(movies[i].getId() == id){System.out.println("下面是该电影的所有信息:");System.out.println("name:" + movies[i].getName());System.out.println("price" + movies[i].getPrice());System.out.println("score:" + movies[i].getScore());System.out.println("actor:" + movies[i].getActor());System.out.println("director:" + movies[i].getDirector());System.out.println("info:" + movies[i].getInfo());break;}}System.out.println("您输入的id未找到匹配项~");}}
import java.util.Scanner;public class test {public static void main(String[] args) {//1.创建一个存储电影信息的类//2.创建一个电影操作方法的类//3.保存数据MovieData[] arr = new MovieData[4];arr[0] = new MovieData(1, "水门桥", 38.9, 9.8, "徐克", "吴京", "12w");arr[1] = new MovieData(2, "出拳吧", 39, 7.8, "唐晓白", "田雨", "3.5w");arr[2] = new MovieData(3, "月球陨落", 42, 7.9, "罗兰", "贝瑞", "17.9w");arr[3] = new MovieData(4, "一点就到家", 35, 8.7, "许宏宇", "刘昊然", "10.8w");//测试MovieOperation a = new MovieOperation(arr);System.out.println("---------------------");//4.实现test逻辑Scanner sc = new Scanner(System.in);do {System.out.println("提示:1.展开全部电影信息"+"\n" + "2.输入id,搜查该电影的详细信息"+"\n"+"0:退出");int commend = sc.nextInt();switch (commend) {case 0: {System.out.println("退出");break;}case 1: {System.out.println("展开所有电影");a.printAllInfo(arr);break;}case 2: {System.out.println("展开该电影所有信息");int id = sc.nextInt();a.printMovieInfo(id);break;}default:System.out.println("输入错误");}}while(true);}
}

EOF

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/792479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++核心编程——4.2(2)对象的初始化和清理

4.2.5 深拷贝与浅拷贝 浅拷贝&#xff1a;编译器提供的简单的赋值拷贝操作 深拷贝&#xff1a;在堆区重新申请空间&#xff0c;进行拷贝操作 示例&#xff1a; class Person { public://无参&#xff08;默认&#xff09;构造函数Person() {cout << "无参构造函数…

力扣热题100_链表_2_两数相加

文章目录 题目链接解题思路解题代码 题目链接 2. 两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 …

黑马鸿蒙笔记

目录 25-Stage模型-页面及组件生命周期 26-Stage模型-UIAbility的启动模式 25-Stage模型-页面及组件生命周期 26-Stage模型-UIAbility的启动模式 singleton 只会有一个实例 multiton 会有多个&#xff0c;但是会销毁旧的 standard 会有多个&#xff0c;但是不会销毁

【MATLAB第102期】基于MATLAB的BRT增强回归树多输入单输出回归预测模型

【MATLAB第102期】基于MATLAB的BRT增强回归树多输入单输出回归预测模型 BRT&#xff0c;即Boosted Regression Trees&#xff08;增强回归树&#xff09;&#xff0c;是一种用于回归问题的集成学习方法。它结合了多个决策树模型&#xff0c;通过逐步改进的方式来提高整体模型的…

GDAL源码剖析(九)之GDAL体系架构

GDAL源码剖析&#xff08;九&#xff09;之GDAL体系架构_gdal 源码-CSDN博客 在GDAL库中包含栅格数据的读写&#xff0c;矢量数据的读写&#xff0c;以及栅格和矢量数据的相关算法。下面主要对GDAL中栅格数据和矢量数据的体系架构做一个简单的说明。本人英文很烂&#xff0c;有…

Linux 多线程与线程控制(程序均有详细注释)

多线程与线程控制 线程的基本概念线程的特点页表多线程 线程控制线程的创建线程传参线程id资源回收---线程等待线程id和LWP 封装一个线程库线程互斥和线程同步线程互斥基本原理线程安全VS线程不安全锁的诞生可重入VS线程安全 死锁死锁的定义 线程同步条件变量接口 生成消费者模…

使用Python获取红某书笔记详情并批量无水印下载

根据红某手最新版 请求接口必须要携带x-s x-s-c x-t,而调用官方接口又必须携带cookie,缺一不可,获取笔记详情可以通过爬取网页的形式获取&#xff0c;虽然也是无水印&#xff0c;但是一些详情信息只能获取大概&#xff0c;并不是详细的数值&#xff0c;因此既不想自己破解x-s x…

清明时节雨纷纷,AI达人用Bedrock(第一季)

今天是清明小长假第一天&#xff0c;没有外出踏青&#xff0c;在家体验Amazon Bedrock的强大能力。Amazon Bedrock是专门为创新者量身打造的平台&#xff0c;它提供了构建生成式人工智能应用程序所需的一切。 这次我主要尝试的是通过 Amazon Bedrock 里的 Stability AI SDXL 1…

C++理解std::move和转发(std::forward)

理解 std::move 标准库move函数是使用右值引用的模板的一个很好的例子。 幸运的是&#xff0c;我们不必理解move所使用的模板机制也可以直接使用它。 但是&#xff0c;研究move是如何工作的可以帮助我们巩固对模板的理解和使用。 我们注意到&#xff0c;虽然不能直接将一个…

提升工作效率:B端工作台设计基础详解

随着互联网和信息技术的快速发展&#xff0c;越来越多的企业开始以数字化、智能化的方式管理和运营自己的业务。B端工作台设计作为企业应用的重要组成部分&#xff0c;越来越受到重视。本文将从三个方面对B端工作台设计进行全面分析。让我们看看。 1. B端工作台设计原则 B端工…

攻防世界 wife_wife

在这个 JavaScript 示例中&#xff0c;有两个对象&#xff1a;baseUser 和 user。 baseUser 对象定义如下&#xff1a; baseUser { a: 1 } 这个对象有一个属性 a&#xff0c;其值为 1&#xff0c;没有显式指定原型对象&#xff0c;因此它将默认继承 Object.prototype。 …

不堪大用的pow

【题目描述】 输出100&#xff5e;999中的所有水仙花数。若3位数ABC满足&#xff0c;则称其为水仙花 数。例如&#xff0c;所以153是水仙花数。 【题目来源】 刘汝佳《算法竞赛入门经典 第2版》习题2-1 水仙花数&#xff08;daffodil&#xff09; 题目很简单&#xff0c;…

配置vite配置文件更改项目端口、使用@别名

一、配置vite配置文件更改项目端口 vite官方文档地址&#xff1a;开发服务器选项 | Vite 官方中文文档 (vitejs.dev) 使用&#xff1a; 二、使用别名 1. 安装 types/node types/node 包允许您在TypeScript项目中使用Node.js的核心模块和API&#xff0c;并提供了对它们的类型…

picGo图床搭建gitee和smms(建议使用)

picGoGitee 这个需要下载gitee插件, 因为官方频繁的检索文件类型, 有时候也会失效 如果没有特殊要求平时存个学习的要看图中文字的重要的图片建议就是smms, 免费也够用! 图片存本地不方便, 各种APP中来回传还会失帧损失画质, 所以你值得往下看 picGosmms 建议使用这个, sm…

每日面经分享(python part1)

Python中的深拷贝和浅拷贝的区别是什么&#xff1f; a. 浅拷贝创建一个新的对象&#xff0c;但其中的可变元素仍然共享引用。只有对象的第一层被复制&#xff0c;而更深层次的嵌套对象仍然是引用。更改其中一个对象的属性会影响到其他对象。 b. 深拷贝创建一个完全独立的新对象…

docker部署nacos,单例模式(standalone),使用内置的derby数据库,简易安装

文章目录 前言安装创建文件夹docker指令安装docker指令安装-瘦身版 制作docker-compose.yaml文件查看页面 前言 nacos作为主流的服务发现中心和配置中心&#xff0c;广泛应用于springcloud框架中&#xff0c;现在就让我们一起简易的部署一个单例模式的nacos&#xff0c;版本可…

【Linux】详解动态库链接和加载对可执行程序底层的理解

一、动静态库链接的几种情况 如果我们同时提供动态库和静态库&#xff0c;gcc默认使用的是动态库。如果我们非要使用静态库&#xff0c;要加-static选项。如果我们只提供静态库&#xff0c;那可执行程序没办法&#xff0c;只能对该库进行静态链接&#xff0c;但程序不一定整体…

python和pip中常见命令和方法

玩python的同学想必没有不用pip的吧&#xff0c;pip是python包管理工具&#xff0c;和Nodejs的npm、Java的maven类似&#xff0c;这些依靠开源力量建立起的庞大软件库极大提高了开发的效率&#xff0c;下面是整理和总结pip中的常见命令和方法。 pip更新版本 python -m pip inst…

利用Spark将Kafka数据流写入HDFS

利用Spark将Kafka数据流写入HDFS 在当今的大数据时代&#xff0c;实时数据处理和分析变得越来越重要。Apache Kafka作为一个分布式流处理平台&#xff0c;已经成为处理实时数据的事实标准。而Apache Spark则是一个强大的大数据处理框架&#xff0c;它提供了对数据进行复杂处理…

Echarts 自适应宽高,或指定宽高进行自适应

文章目录 需求分析 需求 有一个按钮实现对Echarts的指定缩放与拉长&#xff0c;形成自适应效果 拉长后效果图 该块元素缩短后效果图 分析 因为我习惯使用 ref 来获取组件的 DOM 元素&#xff0c;然后进行挂载 <div ref"echartsRef" id"myDiv" :sty…