给出以下样本:
public class Main {
public static void main(String[] args) {
System.out.println(1234);
System.out.println(01234);
}
}
输出是:
1234
668
为什么?
答案 0 :(得分:11)
这是因为具有前导零的整数文字是八进制整数(基数为8):
1 * 8^3 + 2 * 8^2 + 3 * 8 + 4 = 668
答案 1 :(得分:7)
section 3.10.1 of the Java Language Specification中对此进行了描述。基本上 decimal 文字只是0或1-9后跟一个或多个0-9个字符。
octal 文字是0后跟一个或多个0-7个字符。
因此,01234被视为八进制。
(另外,有趣的是“0”是十进制文字,但“00”是八进制文字。考虑到价值显然是相同的,我无法想象任何重要的情况。)
答案 2 :(得分:4)
前导零表示八进制(基数为8)。基础-8上的1234是668。
答案 3 :(得分:4)
具有前导零的数字文字被解释为八进制,即基数为8。