Java 为什么类型不匹配:无法从int转换为byte
在eclipse中,它显示错误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); } } 对于
无法从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