为什么字节总和是整数?

我有tyo字节变量

byte a = 3; byte b = 4; 

如果我求它们,sum的值是整数。

 byte z = a+b //error, left side is byte, right side is integer 

为什么a + b是int?

因为Java语言规范是这样说的

对操作数执行二进制数字提升(第5.6.2节)。

请注意,二进制数字提升执行值集转换(第5.1.13节),并可执行拆箱转换(第5.1.8节)。

数值操作数上的加法表达式的类型是其操作数的提升类型。

并且, 关于数字促销 ,

应用扩展基元转换(第5.1.2节)来转换由以下规则指定的一个或两个操作数:

  • […]
  • 否则,两个操作数都将转换为int类型。

因此byte值被提升为int值并相加。 表达式的结果是提升类型,因此是int

您可以简单地投射结果

 byte z = (byte) (b + a); 

但要小心溢出/下溢。