Что означают две точки с запятой в Java для цикла? - PullRequest
32 голосов
/ 15 апреля 2011

Я заглянул внутрь класса AtomicInteger и наткнулся на следующий метод:

/**
 * Atomically increments by one the current value.
 *
 * @return the previous value
 */
public final int getAndIncrement() {
    for (;;) {
        int current = get();
        int next = current + 1;
        if (compareAndSet(current, next))
            return current;
    }
}

Может кто-нибудь объяснить, что означает for(;;)?

Ответы [ 5 ]

55 голосов
/ 15 апреля 2011

Это эквивалентно while(true).

Цикл for состоит из трех элементов:

  • инициализатор
  • условие (или выражение завершения)
  • инкрементное выражение

for(;;) не устанавливает ни один из них, превращая его в бесконечный цикл.

Ссылка: Оператор for

9 голосов
/ 15 апреля 2011

Это то же самое, что и

while(true) {
    //do something
}

... чуть менее ясно.
Обратите внимание, что цикл завершится, если compareAndSet(current, next) будет оцениваться как true.

3 голосов
/ 15 апреля 2011

Это просто еще один вариант бесконечного цикла, такой же, как while(true){}.

2 голосов
/ 15 апреля 2011

Это бесконечный цикл, как while(true).

2 голосов
/ 15 апреля 2011

Это вечный цикл.это просто цикл без каких-либо определенных условий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...