use*_*979 5 java byte integer type-conversion type-mismatch
我有tyo字节变量
byte a = 3;
byte b = 4;
Run Code Online (Sandbox Code Playgroud)
如果我求和它们,sum的值是整数.
byte z = a+b //error, left side is byte, right side is integer
Run Code Online (Sandbox Code Playgroud)
为什么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);
Run Code Online (Sandbox Code Playgroud)
但要小心溢出/下溢.
归档时间: |
|
查看次数: |
7408 次 |
最近记录: |