byte/short/char类型数据进行运算时,编译器会先把所有数据都转换为转换为int再运算
所以你会发现以下代码是正确的
byte a = 1;
byte b = 2;
byte c = 1 + 2;
因为在编译时,1和2是常量,编译器确定1+2的范围不会超过byte,所以可以赋值给c
但以下代码是错误的
byte a = 1;
byte b = 2;
byte c = a + b;
因为a,b是变量,不确定结果,故会先把a和b转换为整型,再进行运算,而int是不能赋值给byte的