我对在java中编译变量有疑问。 我有以下代码
byte b1 = 6;
byte b2 = 5;
byte bsum;
bsum = (b1 + b2); // (1)
为了工作,代码需要的是:
byte b1 = 6;
byte b2 = 5;
byte bsum;
bsum = (byte)(b1 + b2); // (2)
为什么在(1)情况下eclipse说不能从int转换为byte?为什么当字节变量最多需要127时,b1 + b2会转到int?我很困惑..
谢谢你的时间!
答案 0 :(得分:2)
按specification +
运算符返回int
,这就是您需要进行投射的原因。
(1)表示无法将b1 + b2
分配给byte
,因为int
的范围宽于byte
的范围。