Byte arithmetic: How to subtract to a byte variable?
本问题已经有最佳答案,请猛点这里访问。
当我尝试这样做时,我会出错:
1 2 | byte a = 23; a = a - 1; |
编译器给出以下错误:Java:8:可能发现的精度损失:INT要求:字节A=A—1;^1误差
铸造不能解决错误…为什么编译器不让我做?是否需要将变量"a"转换为int?
这样做。
1 | a = (byte)(a - 1); |
当你从
在Java数学中,在计算之前,所有的东西都被提升到至少一个EDCOX1×1。这被称为二进制数字提升(JLS 5.6.2)。所以编译器找到了一个
1 | a = (byte) (a - 1); |
这就是为什么你必须把它转换成一个字节,如下所示:
1 | a = (byte) (a - 1); |
这样做:
1 | a -= 1; |
您甚至不需要显式的强制转换,编译器/JVM将为您执行它。
如果您将变量类型更改为int,没有人可以说,只有您提供的信息。
变量类型由计划使用它执行的任务定义。
如果你的变量A计算某人手上的手指,你为什么要用int?类型byte已经足够了。