为什么我得到类型不匹配:无法从int转换为byte

时间:2013-05-19 10:13:19

标签: java byte

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。这里sum是122,它在字节范围内。所以为什么我在这里得到这个错误。

提前致谢...

2 个答案:

答案 0 :(得分:4)

当你对字节进行数学运算时,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

答案 1 :(得分:1)

byte t3 = t1 + t2;

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

字节t3 = 111 + 11;

但是,这些数字是整数文字,这就是编译器抱怨的原因。你必须做明确的演员:

byte t3 = (byte) (t1 + t2);