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

时间:2016-04-19 02:05:42

标签: java arrays integer leading-zero

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

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

2 个答案:

答案 0 :(得分:3)

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

所以011是九。

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

答案 1 :(得分:1)

前导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 

等等