前导零会混淆整数解释
处理整数文字时,前导零的存在可能会产生意想不到的后果。考虑以下代码:
System.out.println(0123); // prints 83 System.out.println(123); // prints 123
为什么第一行打印 83 而不是 123?关键在于前导零。
八进制解释
整数文字中的前导零表示该数字以八进制(以 8 为基数)表示。要将八进制数转换为十进制数,请将每个数字从右到左乘以适当的 8 次方,然后对结果求和。
对于 0123,我们有:
(1 * 8 * 8) + (2 * 8) + (3) = 83
因此,0123 被解释为十进制值 83。
为什么没有八进制浮点数?
奇怪的是,Java 不允许八进制浮点文字,因此此行为仅适用于整数。
最佳实践
为了避免混淆,通常建议避免在整数文字中使用前导零,除非您特别希望将数字解释为八进制。
以上是为什么 Java 中'0123'打印'83'?的详细内容。更多信息请关注PHP中文网其他相关文章!