Java基础语法知识总结

Java基础语法知识总结,第1张

一、标识符和关键字 1.1 标识符

定义: Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符。(凡是自己可以起名字的地方都叫标识符)
标识符命名规则:
(1)由26个英文字母大小写,0-9 ,_或 $ 组成
(2)数字不可以开头
(3)不可以使用关键字和保留字,但能包含关键字和保留字。
(4)Java中严格区分大小写,长度无限制。
(5)标识符不能包含空格。

1.2 关键字

定义: 被Java语言赋予了特殊含义,用做专门用途的字符串(单词)被称为关键字。
特点: Java中所有关键字都是小写
官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
注: 关键字不必死记,在以后的学习中会熟悉

二、基本数据类型

基本数据类型(8个),也称原始数据类型;
引用数据类型(3种):数组、类、接口

2.1 布尔类型

(1)布尔类型数据占一个字节。
(2)boolean类型适用于逻辑运算,一般用于程序控制语句。
(3)boolean类型数据只允许取值true和false ,无null。
(4)不可以用0或者非0整数代替false和true,这点和c语言不同。

2.2 字符类型

(1)字符常量为单引号括起来的单个字符,如:char tmp = ‘a’;
(2)Java语言中还允许使用转义字符 ‘’ 来将其后的字符转义为其它的含义;例如:char tmp = ‘\n’;//表示换行
(3)Java 字符采用 Unicode编码,每个字符占用两个字节。
(4)在Java中char本质是一个整数,在输出是,是unicode码对应的字符。
(5)可以直接给char赋值一个整数,在输出时,会按照对应的unicode字符输出;例如:97 —> a

补充: Unicode统一了全世界各个国家的文字的一种编码方式,用这样的编码可以把全世界各个国家的文字连接起来。Unicode编码分为两种:Utf-8 和 Utf-16。Java采用了Utf-8,每个字符占2个字节。

2.3 整数型

Java语言整型常量的三种表示形式:
(1)十进制整数,如:99,88…
(2)八进制整数,要求以 0 开头,如:013
(3)十六进整数,要求以0x或0X开头,如:0x18

取值范围:

  1. byte的取值范围为-128~127,占用1个字节( (-2)^7 ~ 2^7 -1)
  2. short的取值范围为-32768~32767,占用2个字节((-2)^15 ~ 2^ 15 - 1)
  3. int的取值范围为(-2147483648~2147483647),占用4个字节((-2)^31 ~ 2^ 31 - 1)
  4. long的取值范围为(-9223372036854774808~9223372036854774807),
    占用8个字节((-2)^63 ~ 2^ 63 - 1)
2.4 浮点类型

(1)Java浮点类型有固定的表数范围和字段长度,不受平台影响。
(2)两种表示形式:

十进制数形式,例如:3.14, .314 等
科学计数法形式,例如:3.14e2 ,3.14E2 ,3.14E - 2

(3)Java浮点型常量默认为double型,如果要声明一个float类型的常量,需要在数字后面加 f 或 F

例如:float d = 3.1415f; //如果不加 f 或 F 会报错

2.5 基本数据类型转换 2.5.1自动类型转换


自动类型转换注意细节:

  1. 有多种类型的数据混合运算时,系统首先自动所有数据转换成容量最大的那种数据类型,然后再进行计算。
  2. 当我们把精度达的数据类型赋值给精度小的数据类型时,会报错;反之会进行自动类型转换
  3. (byte,short)和 char之间不会相互转换
  4. boolean不参与转换
  5. 自动提升原则:表达式的结果的类型自动提升为 *** 作数中最大的类型
2.5.2强制类型转换

自动类型转换的逆过程,将精度大的数据类型转换为精度小的数据类型。
强制转换符(),但可能造成精度降低或溢出

强制类型转换注意细节:

  1. 强制转换符号只针对最近的 *** 作数有效,往往会使用小括号提升优先级
  2. char类型可以保存int的常量值,但不能保存int的变量值,需要强转

char c1 = 100; //ok
int m = 100; //ok
char c2 = m;//ERROR
char c3 = (char)m;//ok --------> 得到100对应的字符

三、运算符

定义: 一种特殊符号,用以表示数据的运算、赋值和比较数与整数。
运算符分类: 算术运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符

3.1 算术运算符

3.2 赋值运算符

3.3 关系运算符


关系运算符的结果都是boolean类型
关系表达式经常用在 if 结构的条件中或循环结构的条件中

3.4 逻辑运算符


逻辑运算符运算规则:
(1)a&b:& 叫逻辑与;规则:当 a 和 b 同时为true,结果为true,否则为false
(2)a&&b:&& 叫短路与;规则:当 a 和 b 同时为true,结果为true, 否则为false
(3)a | b:| 叫逻辑或;规则:当 a 和 b 中有一个为true,结果为true,否则为false
(4)a || b:|| 叫短路或;规则:当 a 和 b 中有一个为true,结果为true,否则为false
(5)!a:!叫取反;规则:当 a 为true,结果为false;当 a 为false,结果为true
(6)a ^ b:^ 叫逻辑异或,当 a 和 b 不同时,则结果为true,否则为false

注意:
短路与和逻辑与的区别:&&短路与,如果第一个条件为false,则不会判断第二个条件,最终结果为false;&逻辑与,不管第一个条件是否为false,都会判断第二个条件,效率低。
短路或和逻辑或的区别:|| 短路或,如果第一个条件为true,则不会判断第二个条件,最终结果为true;| 逻辑或,不管第一个条件是否为true,都会判断第二个条件,效率低。
在开发中基本上使用短路与和短路或

3.5 三元运算符

基本语法:条件表达式 ?表达式1:表达式2;
运算规则:
(1)如果条件表达式为true,运算后的结果是表达式1。
(2)如果条件表达式为false,运算后的结果是表达式2。

表达式1和表达式2要为可以赋给接收变量的类型(或者可以自动转换,或者强制转换)
三元运算符可以转换为 if–else 语句

3.6 运算符的优先级


(1)只有单目运算符和赋值运算符是从右向左运算
(2)上面这个表不要背,在后面的学习中会逐渐掌握

四、程序控制结构 4.1 介绍

在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大程序控制语句:
(1)顺序控制
(2)分支控制
(3)循环控制

4.2 顺序控制

介绍: 程序从上到下逐行执行,中间没有判断和跳转

public static void main(String[] args){ 
	//顺序执行,根据编写的顺序,从上到下运行 
	System.out.println(1); 
	System.out.println(2); 
	System.out.println(3);
 }
4.3 分支控制

介绍: 让程序有选择的执行,分支控制有三种:
(1)单分支 if
(2)双分支 if - else
(3)多分支 if … else if … else

4.3.1单分支
if(条件表达式){
	执行代码块;(可以有多条语句)
}
  • 执行流程
    (1)判断条件表达式的结果是true还是false
    (2)如果是true就执行语句体
    (3)如果是false就不执行语句体
4.3.2双分支
if(条件表达式){
	执行代码块1;(可以有多条语句)
} else {
	执行代码块2;(可以有多条语句)
}
  • 执行流程
    (1)判断条件表达式的结果是true还是false
    (2)如果是true就执行语句体1
    (3)如果是false就执行语句体2
4.3.3多分支
if(条件表达式1{
	执行代码块1;(可以有多条语句)
} else if (条件表达式2) {
	执行代码块2;(可以有多条语句)
} 
......
} else if (条件表达式n){
	执行代码块n;(可以有多条语句)
} else {
	执行代码块n + 1;(可以有多条语句)
}
  • 执行流程
    (1)判断条件表达式1的结果是true还是false
    (2)如果是true就执行语句体1
    (3)如果是false就继续判断条件表达式2看其结果是true还是false
    (4)如果是true就执行语句体2
    (5)如果是false就继续判断关系表达式……看其结果是true还是false…
    (6)如果没有任何关系表达式为true,就执行语句体n+1。
4.4 选择语句
  • switch语句格式:
switch(表达式) { 
	case 常量值1: 语句体1; break; 
	case 常量值2: 语句体2; break;
	 ... 
	default: 语句体n+1; break; 
}
  • 执行流程
    (1)计算表示的值
    (2)和case依次进行比较,一旦找到与之对应的值,就会执行相应的语句,遇到break就会结束
    (3)如果所有的case都不匹配,就会执行default语句体部分,然后结束

switch语句中,表达式的返回值必须是:byte,short,int,char,enum(枚举)、String
case语句中的值必须是常量,不能是变量
二者的数据类型必须相对应或者可以自动转换成相互比较的类型
default语句是可选的(可以选择写或者不写)

  • case的穿透性:
    在switch语句中,如果case的后面不写break,就会出现穿透现象,也就是不会再判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。(一定要注意这一点)
4.5 循环语句

介绍: 循环语句可以在满足循环条件的情况下,反复执行某一段代码(这段被重复执行的代码被称为循环体语句)当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

4.5.1循环语句—for
  • for循环语句格式:
for(循环变量初始化1; 循环条件2; 循环变量迭代3){ 
			循环体4;(可以有多条语句)
}
  • 执行流程 :1243 —> 243 -> 243 …直到不满足条件
    (1)根据变量的初始值,进行循环条件的判断
    (2)如果不满足循环条件,就跳出循环
    (3)如果满足循环条件,就执行循环体,然后进行循环变量的迭代
    (4)在进行循环条件的判断…
    (5)直到循环变量迭代到不满足循环条件后,跳出循环

细节说明:
(1)循环条件是返回一个布尔值的表达式。
(2)for(;循环条件;)中的初始化和变量迭代可以写到其他地方,但是两边的分号不能省略。
(3)循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开;循环变量迭代也可以有多条语句,中间用逗号隔开。

4.5.2循环语句—while
  • while循环语句格式:
循环变量初始化1;
while(循环条件2) { 
	循环体3;
	循环变量迭代4;
}
  • 执行流程 :1234 —> 234 -> 234 …直到不满足条件
    (1)根据变量的初始值,进行循环条件的判断
    (2)如果不满足循环条件,就跳出循环
    (3)如果满足循环条件,就执行循环体,然后进行循环变量的迭代
    (4)在进行循环条件的判断…
    (5)直到循环变量迭代到不满足循环条件后,退出循环
4.5.3循环语句—do…while
  • do…while循环格式
循环变量初始化1;
do { 
	循环体2;
	循环变量迭代3;
} while(循环条件4);
  • 执行流程 :1234 —> 234 -> 234 …直到不满足条件
    (1)直接执行循环体和循环变量的迭代
    (2)根据循环变量的值,进行循环条件的判断
    (3)如果不满足循环条件,就跳出循环
    (4)如果满足循环条件,就执行循环体,然后进行循环变量的迭代
    (5)在进行循环条件的判断…
    (6)直到循环变量迭代到不满足循环条件后,退出循环

do…while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。

4.6 循环语句的比较 4.6.1switch和if的比较
  1. 如果判断的具体数值不多,而且符合byte,short,int,char,enum(枚举)、String这六种数据类型,建议使用switch语句。
  2. 其他情况:对区间判断,结果为boolean类型判断,使用 if,if 的使用范围更加的广。
4.6.2for 和 while的区别
  1. 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继 续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
  2. 在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。
4.7 跳出控制语句

break
终止switch或者循环
离开使用场景的存在是没有意义的

break语句出现在多层嵌套的语句块中,可以通过标签指明要终止的是哪一层语句块。(很少会用到,在这里就不介绍了;有需要的小伙伴可以自己查询资料)

continue
continue语句用于结束本次循环,继续执行下一次循环

continue语句出现在多层嵌套的语句块中,可以通过标签指明要终止的是哪一层语句块。(和break的使用规则一样)

return
return 使用在方法,表示跳出所在的方法;在方法那章会详细说明…

4.8 嵌套循环

嵌套循环:“指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。
总共的循环次数=外循环次数*内循环次数

for(循环变量初始化; 循环条件; 循环变量迭代){ 
	for(循环变量初始化; 循环条件; 循环变量迭代){ 
			循环体;(可以有多条语句)
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/786506.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-05
下一篇2022-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存