▲标识符
由 字母、数字、下划线、美元符号 组成
- 字母不打头
- 区分大小写
- 不能使用关键字
▲常量
- 整数 常量
- 小数 常量
- 布尔型 常量(true/false)
- 字符 常量
- 字符串 常量
- null 常量
整数常量:
-
- 十进制:0-9,满10进1
- 八进制:0-7,满8进1,0开头
- 十六进制:0-9,A-F,满16进1,0x开头
进制转换:
▲变量
数据类型
基本数据类型:byte、short、int、long、float、double、char、boolean
引用数据类型:类、接口、数组
byte:8位,-128~127,默认值0
short:16位,-32768~32767,默认值0
int:32位,默认值0,整型默认类型
long:64位,默认值0L
float:32位,单精度,默认值0.0d
double:64位,双精度,默认值0.0f,浮点数默认类型
boolean:true/false,默认false
char:16位
类型转换
自动类型提升:
低------------------------------------------------------------>高
byte,short,char -->int -->long --> float --> double
强制类型转换:
- 大容量的数据类型转换为小容量的数据类型,必须强制类型转换。
- System.out.println('a'+1);//98-->a在ASCII表中对应97
System.out.println('A'+1);//66-->A在ASCII表中对应65
- byte b = 3;
b = (byte) (3 + 2);
▲运算符
- 算术运算符:+ - * / %(取余) ++ --
- 关系运算符
- 位运算符
- 逻辑运算符:&& || !
- 赋值运算符
- 其他运算符
算术运算符:
++a:先自增,再进行表达式运算
a++:先进行表达式运算,再自增
int a = 5; int b = 5; int x = 2*++a; int y = 2*b++;
最后结果:a = 6,b = 6,x = 12,y = 10
位置运算符:
A = 0011 1100
B = 0000 1101
-----------------------
A&B = 0000 1100 (与;全1为1,有0为0; 0&0=0,0&1=0,1&0=0,1&1=1)
A | B = 0011 1101 (或;全0位0,有1为1; 0|0=0,0|1=1,1|0=1,1|1=1)
A ^ B = 0011 0001 (异或;相同为0,不同为1; 0^0=0,0^1=1,1^0=1,1^1=0)
~A= 1100 0011 (非;每一位都取反)
逻辑运算符:
短路性
当前后两个结果都为true时,结果才为true。
当第一个结果为false时,结果必然为false。这时候不会再进行第二个操作了。
int a = 5;
boolean b = a < 4 && a++<5;
结果:b为false,a的值还是5。(当进行第一个判断,结果为false后,就不会进行第二个操作了)
条件运算符:
// 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
b = (a == 1) ? 20 : 30;
instanceof运算符:
运算符左侧变量所指的对象,是否是操作符右侧类或接口(class/interface)的一个对象
运算符优先级:
(),[] ---- ++,--,~,! ---- */% ---- +,- ---- 位移 ---- 关系运算符 ---- 相等 ---- 按位与& ---- 按位异或^ ---- 按位或| ---- 逻辑与& ---- 逻辑或| ---- 条件?: ---- 赋值
int a=2;
System.out.println(--a/2+(++a*2)); 结果:4
System.out.println(++a*2+--a/2); 结果:7
▲访问控制符