byte b1= 1;
byte b2 =2;
byte b3 =b1+b2;
这种编译为什么会报错,求指导?
道理很简单,两个byte相加的结果byte未必能装下。比如byte b1 = 129; byte b2 = 129; 你说 byte b = b1 + b2 = ?
你那样是把整数赋给byte,改成byte b1= (byte)1;
这个确实是一个问题。
为了防止数据溢出导致的虚拟机JVM的问题。因此是不支持的!
b1和b2相加的结果值默认是int类型的,改为这样就正确了;byte b3 = (byte)(b1+b2);
byte、short、char类型数据在计算时会首先转换成int类型;
所以上面的第三行代码改成: int b3 = b1+b2; 或者 byte b3 = (byte) (b1+b2); 就不会报错了。
大概意思是两个short或者byte类型相加会自动提升为int
这种定义是不会报错的吧。。。