Java for循环中两个分号的含义是什么?

Sha*_*awn 32 java for-loop

我正在查看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;
    }
}
Run Code Online (Sandbox Code Playgroud)

有人解释是什么for(;;)意思吗?

Boz*_*zho 55

它相当于while(true).

for循环有三个元素:

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

for(;;) 没有设置任何一个,使它成为无限循环.

参考:for语句

  • 应该注意的是,传统上`for(;;)`是规范的无限循环,特别是在C. (4认同)
  • 与`while(true)`相比,使用`for(;;)`有什么好处?编辑:我可以用一个简单的Google搜索回答我自己的问题:没什么区别,它们编译成相同的结果。/sf/ask/621660931/ (2认同)

Alb*_*gni 9

这是一样的

while(true) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

......只是不太清楚.
请注意,如果compareAndSet(current, next)将评估为,则循环将退出true.