-1

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

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

4

2 回答 2

3

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

011九也是如此。

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

于 2016-04-19T02:07:15.140 回答
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 

等等

于 2016-04-19T02:07:57.043 回答