带有前导0的int表现得很奇怪

时间:2011-09-02 20:34:25

标签: java int

  

可能重复:
  Integer with leading zeroes

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

int num = 0200;

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

System.out.println(033); // 27

2 个答案:

答案 0 :(得分:11)

当然 - 根据Java语言规范,它将它视为 octal 文字,section 3.10.1

  

八进制数字由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都表示完全相同的整数值。

答案 1 :(得分:6)

这是一个八进制(基数为8)字面值。

同样,0x27是十六进制(基数为16)的字面值,小数值为39。