2014-09-27 3 views
2

Итак, чтобы напечатать числа от 1 до 10, мы пишем простой цикл цикла от i = 1 до i < = 10 и ожидаем увидеть цифры 1 2 3 .. 10. Мне было интересно, что произойдет, если добавить дополнительные нули в состоянии выглядеть примерно так:Странный вывод из цикла for в Java

for(int i=000000; i<000010; i++){ 
    System.out.println(i) 
} 

Выход я был

0 
1 
2 
3 
4 
5 
6 
7 

Почему эти цифры печатаются?

+1

Когда вы лидирующего нуля, это относится как восьмеричные – ngunha02

+0

интересно. Есть ли способ, чтобы он обрабатывался как целое число, так что вместо итерации от 1 до 10 он повторяется с 000001 до 0000010? –

+1

Не использовать ведущие нули? Или вы можете сделать: для (int i = Integer.parseInt («000000», 10); i ngunha02

ответ

5

Литералы, начинающиеся с 0, считаются восьмеричными литералами, a.k.a base-8 целыми числами.

Чтобы вычислить его десятичное значение: 010 = 1 * (8^1) + 0 * (8^0). Это 8, так что ваша петля закончилась, когда я достиг 8.

http://en.wikipedia.org/wiki/Octal