Java: Что такое "for (;;)"
Кто-нибудь, пожалуйста, объясните мне эту инструкцию:
для (;;)
Я столкнулся с несколькими типами этих отметок (например, в ajax-коде facebook и в параллельном Java).
Ответы
Ответ 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 без начального оператора, следующего оператора или условия. Отсутствие условия выхода делает его бесконечным.