为什么字节总和是整数?
我有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);
但要小心溢出/下溢。