1,"=": 对于基本类型可以用"="比较值的是否一致,对于引用类型,比较的是引用地址是否一致, 而equal()方法默认比较的也是地址,可以重写方法,从而比较对象的某些属性是否一致.
2,直接常量:用后缀字符标志类型,如L代表long,F代表float,D代表double.
3,0x(0X)代表十六进制数,0前缀表十八进制数. 可以用Integer.toBinaryString()转换成二进制.
int i2=0x2F;//hexadecimal(uppercase) int i3=0177;//Octal(leading zero) char c = 0xffff;//max char hex value,16位,2字节 print("c: "+Integer.toBinaryString(c)); byte b=0x7f;//max byte hex value,7位,1字节,1个符号位 print("b: "+Integer.toBinaryString(b)); short s = 0x7fff;//max short hex value,15位,2字节 print("s: "+Integer.toBinaryString(s));
4,指数计数法:用"e"来表示10的幂次.
float expFloat=1.39e-43f;//f不能省,因为默认指数是双精度double expDouble = 47e47d; double expDouble2=47e47;//d可以省略
5,按位操作符:&,|,~,^(异或:相同为0不同为1),与逻辑操作符&&,||是不同的,区别是没有短路功能
6,移位操作符:<<,>>,>>>(无符号右移,都插入0),对于有符号右移位,负号高位插入1,正号高位插入0.对于char,byte,short类型数值在移位前转换为int类型,得到的结果也是int,且只能移动低于5位.因为2^5=32,而int只有32位.同理对long类型数值进行处理,移动要低于6位,
对byte或short值进行 <<=或>>=或>>>= 运算,有可能得到错误的结果。对于>>>,最高位是不变的。
7, 字符串操作符:一旦表达式以一个字符串起头,后续所有操作数都是字符串型(会自动转换)
8.布尔值:在if()语句里面,不会把数值类型转换成Boolean类型,这样就避免了一些错误(在C和cpp中会出现非零数编译为true的结果)。
9,截尾和舍入:将小数转为整型时都是截尾,若想四舍五入,需用java.lang.Math中的round()方法
10,对基本类型执行算术运算或按位运算,只要类型比int小,在运算前会自动转换为int,结果也是int,如要赋值给较小类型,必须使用类型转换。同理在float和double,int和long的关系也是这样。