class Test
{
public static void main(String[] args)
{
byte b = 4;
byte b1 = 3;
byte b2 = 7;
b = b1 + b2;
System.out.println(b);
}
}
编译时出错,提示不能将int转化为byte
首先需要明白 byte b = 4;计算机是如何处理的。
我们知道java整型的默认类型是int。
等号右边的4是int型常量 占四个字节 ;而左侧的b是byte型 占一个字节 当计算机检测到右侧的常量在 -128~127之间时,便将int型转换为byte(在这里转换是没问题的,因为byte的一个字节足够装下)。
同理我们可知三次初始化都是没问题的。
问题出现在b=b1 + b2;
因为b1与b2都是变量,两者相加的和计算机并不知道是多少,而且b1与b2可能是在运行时赋值,所以计算机会认为此处错误。
而相同写法,换成int就不会出错 因为int是默认类型,而且int相加比byte相加出错的概率要大得多。