当我试图做这样的事情时,我收到了一个错误:
byte a = 23;
a = a - 1;
Run Code Online (Sandbox Code Playgroud)
编译器给出了这个错误:Test.java:8:可能发现精度损失:int required:byte a = a - 1; ^ 1错误
转换不能解决错误...为什么编译器不让我这样做?我是否需要将变量'a'转换为int?
这样做.
a = (byte)(a - 1);
Run Code Online (Sandbox Code Playgroud)
a从其整数值中减去1时.因此,要以字节为单位分配结果,您需要进行显式类型转换.
在Java数学中,int在计算之前,所有内容至少都会升为a 。这称为二进制数值提升(JLS 5.6.2)。这就是为什么编译器找到一个int。要解决此问题,请将整个表达式的结果转换回byte:
a = (byte) (a - 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8003 次 |
| 最近记录: |