Java变量转换

时间:2014-10-07 18:23:44

标签: java variables casting byte

我对在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?我很困惑..

谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

specification +运算符返回int,这就是您需要进行投射的原因。

(1)表示无法将b1 + b2分配给byte,因为int的范围宽于byte的范围。