类型优先级
运算中不同类型的数据先转化为同一类型,然后进行运算。
即类型升级,具体过程如下:
注意事项:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
强制转换
本质为高优先级–低优先级
// 强制转换 高优先级--低优先级
long n1 = 1000;
float n2 = n1;
int n3 = 1;
int n5 = 129;
// byte n4 = n3; // 报错
byte n4 = (byte)n3;
byte n6 = (byte)n5;
System.out.println(n4); // 1
System.out.println(n6); // -127
其中,对于byte类型转换,当n5,n6去不同值时:
n5:n6 => 127:127, 128:-128, 129:-127, 2816:0, 3072:0 … => 发现每256一个轮回,取值为[-128~127],递增。比如 (byte)3072 的值为0,(byte)20733 的值为1.原因:内存溢出,byte类型最大值为128。所以对其他数只取后8位。
System.out.println((int)66.66); // 66
System.out.println((int)-66.66f); // -66
short n11 = 33;
// char n12 = n11; // 报错
char n9 = 'a';
char n13 = 'b';
// short n10 = n9; // 报错
// short n10 = n9+1; // 报错
n13 += 1; // 不会报错