整数数组中的前导零导致打印不同的值

Leading zeroes in Integer array leading to different values being printed

为什么打印出来的值和输入的不一样?前导零会改变读取整数的方式吗?

Integer[] secondArray = {02,03,04,05,06,011,012,012,0123};

 System.out.println("values:" + Arrays.toString(secondArray));

输出:2、3、4、5、6、9、10、10、83

Java(以及许多其他语言)中整数文字中的前导零表示 八进制 数字(基数 8)。

所以 011 是九。

您可以使用的其他系统是十六进制(0x09,基数 16)和二进制(0b1001,因为 Java7)。

前导 0 的整数被视为八进制(基数 8)数。 转换如下

Octal             Decimal
06         ->     6
07         ->     7
08 (Not a valid octal number)
09 (Not a valid octal number)
010        ->     8
011        ->     9
012        ->     10 

等等