因为Java语言规范这么说
对操作数(第5.6.2节)执行二进制数值提升。
请注意,二进制数值升级执行值集转换(第5.1.13节),并且可能执行拆箱转换(第5.1.8节)。
数字操作数上加法表达式的类型是其操作数的提升类型。
并且,关于数字促销,
扩展原语转换(第5.1.2节)适用于转换以下规则指定的一个或两个操作数:
- […]
- 否则,两个操作数都将转换为type
int。
因此,
byte价值被提升为
int价值并相加。表达式的结果是提升的类型,因此是
int。
您可以简单地转换结果
byte z = (byte) (b + a);
但请注意上溢/下溢。



