03
Апр
2016

Цикл for в java

Друзья, не могу понять причину долго работы цикла. Значит, создаю цикл.

for (int i = 1; i < Integer.MAX_VALUE; i++) {
    // Вычисляем количество цифр в числе i
    int length = (int)Math.ceil(Math.log10(i));
}

Вся программа таким образом работает 10ms и благополучно завершается. Такая программа работает 3ms:

for (int i = 1; i < Integer.MAX_VALUE; i++) {
    // Создаем массив длиной 10 (количество цифр в Integer.MAX_VALUE)
    int[] digits = new int[10];
}

А вот эта программа подвисает надолго:

for (int i = 1; i < Integer.MAX_VALUE; i++) {
    int length = (int)Math.ceil(Math.log10(i));
    int[] digits = new int[length];
}

Почему? Ведь значение length всегда будет меньше или равно 10. Этого и не могу понять. Ведь такая программа работает всего 12ms:

for (int i = 1; i < Integer.MAX_VALUE; i++) {
    int length = (int)Math.ceil(Math.log10(i));
    int[] digits = new int[10];
}

Источник: https://ru.stackoverflow.com/questions/509293/%D0%A6%D0%B8%D0%BA%D0%BB-for-%D0%B2-java

Share

Тебе может это понравится...