Подтвердить что ты не робот

Java: Что такое "for (;;)"

Кто-нибудь, пожалуйста, объясните мне эту инструкцию: для (;;)

Я столкнулся с несколькими типами этих отметок (например, в ajax-коде facebook и в параллельном Java).

4b9b3361

Ответ 1

Бесконечный цикл.

Каждая из трех частей цикла for (for(x; y; z)) является необязательной.

Итак, вы можете сделать это:

int i = 0;
for (; i < 20; ++i)

и это совершенно верно, или

for (int i = 0; i < 20;) { ++i; }

или

for (int i = 0; ; ++i) { if (i < 20) { break; } }

и все они действительны.

Вы также можете опустить все три части с помощью for(;;). Затем у вас есть цикл, который:

  • не инициализирует (первая часть)
  • не имеет условия для остановки (средняя часть)
  • ничего не делает после каждой итерации (последняя часть)

так что в основном бесконечный цикл. Он просто делает то, что он говорит в теле цикла, снова и снова

Ответ 2

Это бесконечный цикл. Для описания инструкции for см. здесь.

Ответ 3

Что бесконечный цикл, аналогичный

while(true)
{
    ...
}

Ответ 4

Его бесконечный цикл, считая, что условие (несуществующего) выхода никогда не будет ложным.

Любой цикл цикла без условия выхода будет бесконечным:

for (int x=0; ; x++) { }

Точно так же, как while (true), хотя немного менее читаемый IMHO.

Ответ 5

Это действительно бесконечный цикл. Но в Java вы действительно предпочитаете while (true) over for (;;), так как это более читаемое (что вы, наверное, уже знаете). Компилятор все равно оптимизирует его. В JavaScript нет средств компилятора и каждого байта по HTTP, поэтому причина, почему for (;;) является предпочтительной. Он сохраняет несколько символов (байты).

Ответ 6

Синтаксис цикла for:

for (init-stmt; condition; next-stmt) {

}

Таким образом, это просто цикл for без начального оператора, следующего оператора или условия. Отсутствие условия выхода делает его бесконечным.