3
class Test
{  
   public static void main(String[] args) 
   { 
     byte t1 = 111;
     byte t2 =11;
     byte t3 = t1+t2;

     System.out.println(t1+t2);   

   }  
}  

在 Eclipse 中它显示错误。cannot convert from int to byte这里的总和是 122,它在字节范围内。所以为什么我在这里收到这个错误。

提前致谢...

4

2 回答 2

5

当您对字节进行数学运算时,Java 会扩大(自动类型提升)到字节(隐式向上转换)到整数这种情况。所以当你表演

 byte t3 = t1+t2; //  t1+t2; will be evaluated as integer.

由于 t1+t2 结果比字节宽,因此您需要将其向下转换为字节。

删除编译错误。

 byte t3 = (byte) (t1+t2); // typecast to byte

有关更多信息,请阅读 JLS 5.1.2

于 2013-05-19T10:18:17.393 回答
1
byte t3 = t1 + t2;

对于上面的语句,编译器放入实际值并尝试计算它:

字节 t3 = 111 + 11;

但是,这些数字是整数文字,这就是编译器抱怨的原因。您必须进行显式转换:

byte t3 = (byte) (t1 + t2);
于 2013-05-19T10:15:46.787 回答