byte b1=10;
byte b2=20;
byte b3=b1+b2;
这组代码为什么会报错?好像是类型不匹配,想不通啊
+号会把两边的类型转换为int后再相加,所以报类型错误,可以强转
byte b3=(byte)(b1+b2)
前两个是直接赋值字节数据范围内的int类型常量,编译器会自然识别并自动转换为byte类型,而第三行是变量引用,编译器无法识别两个数,所以需要强制转换的。
两个byte类型值相加,会提升为int类型。需要类型强制转换, byte b3=(byte)(b1+b2)
short、byte、char 在运算时会自动类型提升,变成int类型,然后int类型(4字节)的运算结果在赋给byte(1字节)时需要类型强制转换,进行高位截断