Ведущие нули в массиве целых чисел, приводящие к печатанию разных значений

Почему значение печатается не так, как ввод? Повлияют ли начальные нули на способ чтения целого числа?

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


person attaboy182    schedule 19.04.2016    source источник
comment
Что такое 011 в восьмеричном? Итак, да, начальный 0 имеет значение.   -  person KevinO    schedule 19.04.2016


Ответы (2)


Ведущий ноль в целочисленном литерале в Java (и во многих других языках) означает восьмеричное число (с основанием 8).

Итак, 011 девять.

Другие системы, которые вы можете использовать, это шестнадцатеричная (0x09, основание 16) и двоичная (0b1001, начиная с Java7).

person Thilo    schedule 19.04.2016

Целые числа с начальным 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 

и так далее

person shafeeq    schedule 19.04.2016