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

Java 为什么类型不匹配:无法从int转换为byte,java,byte,Java,Byte,在eclipse中,它显示错误无法从int转换为byte。这里的sum是122,在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中,它显示错误
无法从int转换为byte
。这里的sum是122,在byte范围内的哪个范围。所以为什么我在这里得到这个错误

先谢谢你

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

     System.out.println(t1+t2);   

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

字节t3=111+11

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

byte t3 = t1 + t2;

当您对字节进行数学运算时,Java会将字节(隐式向上转换)扩展为整数(在这种情况下)。所以当你表演的时候

byte t3 = (byte) (t1 + t2);
由于t1+t2结果比字节宽,所以需要将其向下转换为字节

删除编译错误

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

有关更多信息,请阅读
int
中的添加结果。您必须显式向下转换it122是否在字节范围内?122是否在字节范围内。但是,您看到的结果(122)是
int
。所以它需要向下转换,一个字节可以容纳256个值。无符号字节从0到255,有符号字节从-128到127。实际上,这种解释是不正确的
t1
t2
不是整数文本。它们是
byte
变量。真正的解释是算术运算符的整数操作数被提升为(至少)
int
。看见
 byte t3 = (byte) (t1+t2); // typecast to byte