Java 带前导0'的int;她举止古怪

Java 带前导0'的int;她举止古怪,java,int,Java,Int,可能重复: 有人能告诉我这里发生了什么事吗?当我用前导零初始化int时,程序不会忽略这些零,而是执行一些我不知道的其他操作 int num = 0200; System.out.println(num); // 128 System.out.println(033); // 27 这是一个八进制(以8为基数)的文字 类似地,0x27是十六进制(以16为基数)文本,十进制值为39。当然-根据Java语言规范,它将其视为八进制文本: 八进制数字由ASCII数字0后跟一个或多个ASCII数字0

可能重复:

有人能告诉我这里发生了什么事吗?当我用前导零初始化int时,程序不会忽略这些零,而是执行一些我不知道的其他操作

int num = 0200;

System.out.println(num); // 128

System.out.println(033); // 27
这是一个八进制(以8为基数)的文字


类似地,
0x27
是十六进制(以16为基数)文本,十进制值为39。

当然-根据Java语言规范,它将其视为八进制文本:

八进制数字由ASCII数字0后跟一个或多个ASCII数字0到7组成,可以表示正整数、零整数或负整数

OctalNumeral:
        0 OctalDigits

OctalDigits:
        OctalDigit
        OctalDigit OctalDigits

OctalDigit: one of
        0 1 2 3 4 5 6 7
注意,八进制数字总是由两个或两个以上的数字组成;0通常被认为是一个十进制数字,这在实践中并不重要,因为数字0、00和0x0都表示完全相同的整数值


当然我不知道为什么我想不起来。当我把一个9放进去的时候,它给了一个错误!谢谢你的快速回复,乔恩!好的,我删除我的答案。Java规范应该足够清晰。@aaaa bbbb:您是否单击了
close
链接并实际投票决定关闭?你只是说你认为你应该投票关闭吗?我不是注册用户,所以我不能真正关闭。