2 JAVA语法基础
1、标识符
- 可以标识类名、方法名、变量名、接口名、常量名。
- 命名规则:合法的标识符只能由数字、字母、下划线、美元符号组成,不含有其他符号。
- 不能以数字开头,严格区分大小写(java要求)。
- 关键字不能做标识符。
- 最好见名知意(规范)。
- 遵守驼峰命名方式(规范),UserService,CustomerService等等。
- 类名、接口名:首字母大写UserName,后面每个单词首字母大写 (规范要求) ;
- 变量名、方法名:首字母小写userName、后面每个单词首字母大写 (规范要求) ;
- 常量名:全部大写NUMBER,多个单词的话以下划线隔开 (规范要求) ;
2、关键字
java关键字都是小写的:
举例:class extends implements interface import switch while false true null boolean byte char int long
float double try catch throw finally abstract native private protected public static super void …
3、字面值
- 10、100 “abc”
- -‘a’ true、false
C语言中上述称为常量,java称为字面值(数据),即一看即知其值,常量为其他。
数据类型分类:
* 10、100为整数型字面值; * 3.14为浮点型字面值; * true、false为布尔型字面值;
* “abc”,“中国”为字符串型; * ’A’,’人’为字符型;
* java语言当中所有的字符串型字面值必须使用双引号(半角)括起来。
* java语言当中所有的字符型字面值必须使用单引号(半角)括起来。
字符和字符串区别:字符通常只占据一个字节,字符串可以占据多个字节;定界符不一样。
4、变量
内存:数据临时存储空间
System.out.println(1111100);
System.out.println(1111100);
System.out.println(1111100);
上述3个语句访问的是否为同一块存储空间?否,为不同的存储空间。可以定义一个变量,就可以重复访问同一块存储空间了。
(1)变量的定义
数据要存在内存空间中,存放数据的内存块可以命名,则这块含有名称的空间为变量。
- 变量本质上是内存中的一块空间,这块空间有数据类型、有名字、有字面值。
- 变量包含3部分:数据类型、名称、字面值(数据)。 //具体数据需和数据类型一致
- 变量是内存中存储数据的最基本单元。
(2)数据类型的作用
- 不同的数据有不同的类型,不同的数据类型底层会分配不同大小的空间。
- 数据类型是指导程序在运行阶段应该分配多大的内存空间。
(3)声明/定义变量的语法格式:
//合法标识符即可,首字母小写,后面每个单词首字母大写
(4)变量声明后赋值:
//字面值数据需和变量的数据类型一致
“=”是一个赋值运算符,优先运算右边的表达式。
声明和赋值同时完成:int i = 10,变量赋值后可以重新赋值。*变量的概念使得内存空间得到重复使用。
访问变量的两种访问形式:读取变量中保存的具体数据get;修改变量中保存的具体数据set;
变量在一行上可以声明多个: int a, b, c; 如果int a, b, c=300; 则只赋值了c。
方法体中的代码执行顺序自上而下逐行执行。类体中无直接java语句。
同一个“作用域”中,名称相同的变量不能重复声明。
(5)变量的作用域
作用域即有效范围。在一定范围内变量可以被访问,超出范围则无法访问。
变量的作用域:出了大括号就不认识了。
(6)变量的分类:
根据变量声明的位置来分类:
* 局部变量:在方法体当中声明的变量称为局部变量。
* 成员变量:在方法体外[类体之内]声明的变量称为成员变量。成员变量没有手动赋值会默认赋值。
5、数据类型
作用:指导JVM在运行程序的时候给该数据分配多大的内存空间。
数据类型两种:基本数据类型和引用数据类型。
字符串(使用双引号”abc”)属于引用数据类型。
基本数据类型分为:4大类8小种。
- 类1:整数型:int, long, short, byte
- 类2:浮点型:float, double
- 类3:布尔型:boolean
- 类4:字符型:char
6、数据类型讲解
基本数据类型各自占用空间大小:
基本数据类型 | 占用空间大小 | 取值范围 |
byte | 1 | -128 ~127( 01111111 )或-2^7 ~ 2^7-1 |
short | 2 | -2^15 ~ 2^15-1 |
int | 4 | 有符号int:-2^31 ~ 2^31-1 无符号int:0 ~ 2^32-1 |
long | 8 | -2^63 ~ 2^63 |
float | 4 | -2^128 ~ 2^128 |
double | 8 | -2^1024 ~ 2^1024 |
boolean | 1 | [True, False] |
char | 2 | 0 ~ 65535或0 ~ 2^16-1 |
计算机任何情况下都只识别二进制。只认识101010101010100001110101…
[现代计算机底层采用交流电的方式,接通和断开两种状态,计算机只识别1或0。]
十进制表示满十进一原则。二进制表示满二进一原则。
字节(byte)
1 byte = 8 bit [1个字节 = 8个比特位],一个比特位就是一个二进制位,0或1。
1 KB = 1024 byte 1 MB = 1024 KB
1 GB = 1024 MB 1 TB = 1024 GB = 2^43比特位
二进制和十进制之间转换:
二进制转十进制:2的幂次方。
十进制转二进制:十进制数除2取余数0或1。
最先出现的字符编码:ASCII码
java语言源代码采用的是unicode编码方式,因此“标识符”可以用中文。
实际开发一般用UTF-8编码较多。
转义字符char a = ‘\n’;为一个字符,表示换行。
制表符char a = ‘\t’;
反斜杠字符char a = ‘\\’; 如果为char a = ‘\’;则\将’转义,声明未完成。
浮点型
double d = 3.0;
类型转换:float f = (float)5.1; float f = 5.1f; 两种表达方式。
布尔型
boolean 只有两个值true和false,没有其他值。布尔类型通常使用在逻辑运算和条件控制语句当中。
关于基本数据类型之间的互相转换:转换规则
1、八种基本数据类型当中除布尔类型之外剩下的7种类型之间都可以互相转换。
2、小容量像大容量转换,称为自动类型转换,容量从小到大排序:
byte < short < int < long < float < double
char <
注:任何浮点类型不管占用多少个字节,都比整数型容量大。
char和short可表示的种类数量相同,但是char可以取更大的正整数。
3、大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以需要谨慎使用。
4、当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量。
5、byte,short,char混合运算的时候,各自先转换成int类型再做运算。
6、多种数据类型混合运算,先转换成容量最大的那种类型再做运算。
7、运算符
* 算术运算符 * 关系运算符
* 逻辑运算符 * 字符串连接运算符
* 三元运算符 * 赋值类运算符
a. 算术运算符 (+求和、-相减、*乘积、/商、%求余数,取模、++自加1,--自减1)
运算符有优先级,不确定的加括号(),优先级得到提升。
可以“i++“也可以”++i“。i++为单目运算符。
//++出现在变量前
int m = 20;
int n = ++ m;
System.out.println(m); //21
System.out.println(n); //21
//++出现在变量后,先做赋值运算,再对变量中的保存的值进行自加一。
int a = 100;
int b = a ++;
System.out.println(a); //101
System.out.println(b); //100
int e = 100;
System.out.println(e ++); //100,先打印后赋值
System.out.println(e); //101
int s = 100;
System.out.println(++ s); //101,先赋值后打印
System.out.print(s); //101
b. 关系运算符
> 大于 >= 大于等于
< 小于 <= 小于等于
== 等于 != 不等于
= 赋值运算符
== 关系运算符
关系运算符比较的是两个变量中保存的值。
c. 逻辑运算符/布尔运算符
& 逻辑与(两边都为真才是真) | 逻辑或(只要一个为真就是真)
! 逻辑非 (取反,!false为真) ^ 逻辑异或(两边算子不一样结果为真)
&& 短路与 || 短路或
- 逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是一个布尔类型。
- 短路与和逻辑与最终的运算结果相同,只是短路与存在短路现象。
- 短路或和逻辑或最终的运算结果相同,只是短路或存在短路现象。
- 什么情况发生短路现象? * 第一个条件表达式为假false,会发生短路与;* 第一个条件表达式为真true,会发生短路或;