首先你要明白,+这种运算,需要int类型的数据才可以进行,也就是说byte数据进行该运算的时候,会被编译器自动转换为int,那么也就是说,你将a+b这个int数据赋值给了a这个byte变量,我们知道int是四个字节而byte只有一个,这样会造成精度丢失,所以,编译器不允许这样做。
但是如果这样做是可以的
final byte a=1;
final byte b=2;
byte c;
c=a+b;
这样编译器知道a,b的值固定为1,2那么他们的和就一定是3,所以编译器知道将3这个int转换为byte不会丢失精度,所以就可以。
总之,int一般情况是不能直接转换为byte的,这样丢失精度是危险的。
|