鉴于以下示例:
public class Main {
public static void main(String[] args) {
System.out.println(1234);
System.out.println(01234);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
1234
668
Run Code Online (Sandbox Code Playgroud)
为什么?
Mys*_*ial 11
这是因为具有前导零的整数文字是八进制整数(基数为8):
1 * 8^3 + 2 * 8^2 + 3 * 8 + 4 = 668
Run Code Online (Sandbox Code Playgroud)
这在Java语言规范的3.10.1节中描述.基本上十进制文字只是0或1-9后跟一个或多个0-9个字符.
一个八进制文字是0,接着通过一个或多个0-7个字符.
所以01234被认为是八进制的.
(另外,有趣的是"0"是十进制文字,但"00"是八进制文字.我不能想象任何重要的情况,请注意,因为值显然是相同的.)
| 归档时间: |
|
| 查看次数: |
992 次 |
| 最近记录: |