1、byte,short等的赋值问题,若赋值的数字在其合理范围的,如-128至127的数字赋值给byte,则可以直接赋值,不需要强制类型转换,否则其他情况需要进行类型转换。
public static void main(String[] args) { byte b1 = 12; //值不在-128至127之间的不可直接赋值 byte b2 = 128; short s1 = 128; //值不在-2^16至2^16-1之间的不可直接赋值 short s2 = 9999999999999; }
2、对long进行赋值时,若所赋值在int的合法范围内,比如-2^32至2^32-1之间,则可以直接赋值,这种情况将会自动从int
提升类型至long,但是若不在int合理范围内,则需要将在数字后面加上 l 或 L
public static void main(String[] args) { //在int合法范围内,可以直接赋值 long l1 = 128; //不在int合法范围内,应该在值后面加上L,否则会报错 long l2 = 9999999999L; }
3、对float进行直接赋值时,应当在浮点数后面加上f或F,或者进行强制类型转换,否则将报错
public static void main(String[] args) { //应该加上f,否则报错 float f = 1.89f; }
4、boolean类型的直接量只有true和false,不能以0或非零的数来代替
5、浮点数的特殊值,以及浮点数除以0并不会出现异常
6、移位操作的特殊之处,计算机内存的都是数字的补码,移位操作都是对补码操作