Java基础知识盘点(一)
一、java语言开发环境
1.1 Java虚拟机–JVM
- **JVM(Java Virtual Machine ):**Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的 运行环境,是Java 具吸引力的特性之一。我们编写的Java代码,都运行在 JVM 之上。
- **跨平台:**任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系统上,这个特性称为Java语言的跨平台特性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。(不同系统有对应的JVM版本,JVM本身不具有跨平台功能)
1.2 JRE和JDK
- ** JRE (Java Runtime Environment) :**是Java程序的运行时环境,包含 JVM 和运行时所需要的 核心类库 。
- **JDK (Java Development Kit):**是Java程序开发工具包,包含 JRE 和开发人员使用的工具。
通俗来讲,JDK包含JRE,JRE包含JVM。
二、程序入门简介
2.1 程序开发简介
Java程序开发三步骤:编写、编译、运行。
- javac.exe(编译器)
- java.exe(解释器)
2.2 comment(注释)
- 单行注释:// 开头 换行结束
- 多行注释:/ * 开头 结束 * /
2.3 keywords(关键字)
关键字:是指在程序中,Java已经定义好的单词,具有特殊含义。
2.4 标识符
标识符:是指在程序中,我们自己定义内容。比如 类的名字、方法的名字和变量的名字等等,都是标识符。
命名规则: 硬性要求
- 标识符可以包含** 英文字母26个(区分大小写)** 、** 0-9数字 、 $(美元符号)** 和 _(下划线) 。
- 标识符不能以数字开头。
- 标识符不能是关键字。
命名规范:
- 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
- 方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
- 变量名规范:全部小写。
三、常量简介
3.1 常量概述
常量:是指在Java程序中固定不变的数据。
3.2 分类
类型 | 含义 | 数据举例 |
---|---|---|
整数常量 | 所有的整数 | 0,1 |
小数常量 | 所有的小数 | -0.1, 2.55 |
字符常量 | 单引号引起来,只能写一个字符,必须有内容 | ‘a’ , ‘好’ |
字符串常量 | 双引号引起来,可以写多个字符,也可以不写 | “Hello” ,“你好” ,"" |
布尔常量 | 只有两个值 | true , false |
空常量 | 只有一个值 | null |
四、变量和数据类型
4.1 变量概述
变量:在程序中可以变化的量称为变量,Java中要求一个变量每次只能保存一个数据,必须要明确保存的数据类型。
4.2 数据类型分类
4.3 变量定义格式
格式为: 数据类型 变量名 = 数据值; (数据类型 变量名 数据值为三要素)
ex: int a = 5;
注意点:
- 在同一个括号下,变量名称不可重复;
- 变量必须进行赋值才能使用。
4.4 数据类型转换
1. 自动转换
在运算过程中,将取值范围小的类型自动提升为取值范围大的类型与取值范围大的类型进行计算。
2. 强制转换
在运算过程中强制性的将取值范围小的类型转换为取值范围大的类型。
转换格式:数据类型 变量名 = (数据类型)被转数据值;
ex:// double类型数据强制转成int类型,直接去掉小数点。
int i = (int)1.5;
- 浮点转成整数,直接取消小数点,可能造成数据损失精度。
- int 强制转成 short 砍掉2个字节,可能造成数据丢失。
3. 转换规则
范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int ;
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
4.5 ASCII编码表
将所有的英文字母,数字,符号都和十进制进行了对应,因此产生了世界上第一张编码表ASCII( American Standard Code for Information Interchange 美国标准信息交换码)。
牢记以下即可:‘0’ 对应 48;‘A’ 对应 65;‘a’ 对应97;
五、运算符
5.1 算术运算符
运算符名称 | 功能 | 举例 |
---|---|---|
+ | 加法运算符,主要用于加法运算以及字符串连接(任何数据类型和字符串进行连接的时候,结果都会变成字符串);对于字符char类型来说,在计算之前,char会被提升为int | int sum = 3 + 5/“Hello” + “World” |
- | 减法运算符,主要用于减法运算 | int a = 6 - 3 |
* | 乘法运算符,主要用于乘法运算 | int b = 5 * 4 |
/ | 除法运算符,主要用于除法运算,但只能得到整数 | int c = 7 / 2(结果为3) |
% | 取模运算符,两个数字相除取余数 | int c = 7 / 2(结果为1) |
++、- - | 自增自减运算符(1、单独使用,前++和后++没有任何区别2、混合使用,如果是前++,先加后用,如果是后++,先用后加) | i++、++i |
5.2 赋值运算符
运算符名称 | 功能 | 举例 |
---|---|---|
= | 等于 | int a = 6 |
+= | 加等于 | i += 5(i = i + 5) |
-= | 减等于 | i -= 5(i = i - 5) |
*= | 乘等于 | i *= 5(i = i * 5) |
/= | 除等于 | i /= 5(i = i / 5) |
%= | 取模等于 | i %= 5(i = i % 5) |
5.3 比较运算符
运算符名称 | 功能 | 举例 |
---|---|---|
== | 比较符号两边数据是否相等,相等结果是true | 3 == 5(false) |
< | 比较符号左边的数据是否小于右边的数据,如果小于结果是true | 3 < 5(true) |
> | 比较符号左边的数据是否大于右边的数据,如果大于结果是true | 3 > 5(false) |
<= | 比较符号左边的数据是否小于或者等于右边的数据,如果小于结果是true | 3 <= 5(true) |
>= | 比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是true | 3 >= 5(false) |
!= | 不等于符号 ,如果符号两边的数据不相等,结果是true | 3 != 5(true) |
5.4.逻辑运算符
运算符名称 | 功能 | 举例 |
---|---|---|
&& | 与运算符 | 1. 两边都是true,结果是true 2. 一边是false,结果是false 短路特点:符号左边是false,右边不再运算 |
II | 或运算符 | 1. 两边都是false,结果是false 2. 一边是true,结果是true 短路特点: 符号左边是true,右边不再运算 |
! | 取反运算符 | 1. ! true 结果是false 2. ! false结果是true |
5.5 三元运算符
三元运算符格式如下:
数据类型 变量名称 = (布尔表达式 ?结果a ;结果b)`
六、方法简介
6.1 方法概述
定义:
方法就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。
优点:
当我们需要这个功能的时候,就可以去调用;这样即实现了代码的复用性,也解决了代码冗余的现象。
- 方法必须定义在一类中方法外
- 方法不能定义在另一个方法的里面
6.2 方法格式
格式如下:
修饰符 返回值类型 方法名 (参数列表){
代码…
return 结果(返回值);
}
return后面代码为无效
ps:方法要进行明确返回值类型和参数列表
6.3 方法调用
方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在 主方法中,直接写要调用的方法名字就可以调用了。
方法调用步骤为:
1.方法开始调用
2.实际参数传递
3.方法体内执行
4.方法结束返回(将返回值给到开始调用位置)
方法调用的方式:
1.直接调用 print(); (一般没有返回值)
2.打印调用 System.out.println(getSum(5,6));
3.赋值调用 int sum = getSum(5,6);
6.4.方法重载
方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返 回值类型无关。
- 参数列表:个数不同,数据类型不同,顺序不同。
- 重载方法调用:JVM通过方法的参数列表,调用不同的方法。
七、判断语句
7.1 if语句
格式为:
if(关系表达式){
语句体;
}
执行流程:
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体
- 如果是false就不执行语句体
7.2 if…else语句
格式为:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
1. 首先判断关系表达式看其结果是true还是false
2. 如果是true就执行语句体1
3. 如果是false就执行语句体2
7.3 if…else if…else语句
格式为:
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2;
} … }else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
执行流程 :
- 首先判断关系表达式1看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就继续判断关系表达式2看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就继续判断关系表达式…看其结果是true还是false …
- 如果没有任何关系表达式为true,就执行语句体n+1。
八、选择语句
8.1 switch语句
格式为:
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break; …
default:
语句体n+1;
break;
}
执行流程:
- 首先计算出表达式的值
- 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
ps:如果case后面没有break,将会一直执行。
九、循环语句
9.1 for循环语句
格式:
**for(初始化表达式①; 布尔表达式②; 步进表达式④){
循环体③
} **
执行流程 :
- 执行顺序:①②③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化 ②负责判断是否满足循环条件,不满足则跳出循环
- ③具体执行的语句
- ④循环后,循环条件所涉及变量的变化情况
ps:一般循环次数确定多使用for循环
9.2 while 循环语句
格式:
初始化表达式① while(布尔表达式②){
循环体③
步进表达式④
}
执行流程
- 执行顺序:①②③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化。
- ②负责判断是否满足循环条件,不满足则跳出循环。
- ③具体执行的语句。
- ④循环后,循环变量的变化情况。
ps:循环次数不确定使用while循环语句。
9.3 do while 循环语句
格式:
初始化表达式① do{
循环体③
步进表达式④
}while(布尔表达式②);
执行流程:
- 执行顺序:①③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化。
- ②负责判断是否满足循环条件,不满足则跳出循环。
- ③具体执行的语句 ④循环后,循环变量的变化情况
ps:do while 总会执行一次!
9.4 break和continue 语句
break:终止switch或者循环;
continue:跳过本次,继续进行循环。
9.5 死循环
while(true){}
在判断中条件永远为true,需要使用break语句去停止,在用户不确定输入多少数据的情况下,由用户自行判断停止。
9.6 嵌套循环
格式
for(初始化表达式①; 循环条件②; 步进表达式⑦) {
for(初始化表达式③; 循环条件④; 步进表达式⑥) {
执行语句⑤;
}
}
嵌套循环执行流程:
执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥ 外循环一次,内循环多次。