Bavashi
@Bavashi

Как работают бесконечные циклы с пустым телом цикла в Java?

Привет всем,

К примеру есть такой бесконечный цикл с пустым телом:

public class HelloWorld{
     public static void main(String []args){
                for (int i = 10; i > 1; i++) {}
        System.out.println("Hello World!");
     }
}


Все отработает корректно - ошибок не будет.

Если будет такой цикл, то есть тело не пустое:

public class HelloWorld{
     public static void main(String []args){
        for (int i = 10; i > 1; i++) {
            System.out.println("i = " + i);
        }
        System.out.println("Hello World!");
     }
}


Будет бесконечно крутится. Вопрос - почему так? В Java циклы с пустым телом цикла игнорируются или как-то по-другому обрабатываются?

P.S. Извините за слишком простой вопрос, но в гугле пока никак не найду подробного ответа.
  • Вопрос задан
  • 603 просмотра
Решения вопроса 1
@koperagen
public class Main {
    public static void main(String[] args) {
        int a = Integer.MAX_VALUE;
        System.out.println(++a == Integer.MIN_VALUE); // true
    }
}


Получается, в вашем коде цикл доходит до максимального положительного значения int, происходит переполнение, переменная принимает отрицательное значение и условие цикла резко перестает быть истинным. Т.е. это не бесконечный цикл, но 2 миллиарда принтов в стандартный вывод ну очень уж долго происходят, поэтому впечатление, что цикл бесконечный.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ростов-на-Дону
от 100 000 до 180 000 ₽
Sportmaster Lab Москва
от 80 000 до 320 000 ₽
01 окт. 2020, в 21:13
600 руб./в час
01 окт. 2020, в 19:53
60000 руб./за проект
01 окт. 2020, в 19:40
15000 руб./за проект