为什么会发生这种行为?
long value = 123450;
System.out.println("value: " + value);
值:123450
long value = 0123450;
// ^
System.out.println("value: " + value);
值:42792
这个 42792 是什么?
最佳答案
Why this behavior happens?
正如以 0x
开头的文字被视为十六进制数(以 16 为底)一样,以 0
开头的文字被视为 octal numbers ,即以 8 为基数的数字。
(尝试写 0789,你会发现编译器会报错。)
What is this 42792?
123450以8为基数表示数
1×85 + 2×84 + 3× 83 + 4×82 + 5×81 + 0×80 = 42792
关于java - 左边为 0 的 long 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540179/