两个分号在 Java for 循环中是什么意思?

2022-09-01 07:23:12

我正在查看类内部,并遇到了以下方法: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(;;)


答案 1

它等效于 。while(true)

for 循环有三个元素:

  • 初始 化
  • 条件(或终止表达式)
  • 增量表达式

for(;;)不设置其中任何一个,使其成为一个无限循环。

参考:for 语句


答案 2

这与

while(true) {
    //do something
}

...只是稍微不那么清楚。
请注意,循环将退出 if 将计算为 。compareAndSet(current, next)true