我正在阅读一些Java API文档,我遇到了一个非常奇怪的外观的循环,这让我很高兴来到这里并询问它是什么。很高兴能尽快找到它。谢谢你即将到来的努力。
public int read() throws IOException {
synchronized (lock) {
ensureOpen();
**for (;;)** {
if (nextChar >= nChars) {
fill();
if (nextChar >= nChars)
return -1;
}
if (skipLF) {
skipLF = false;
if (cb[nextChar] == '\n') {
nextChar++;
continue;
}
}
return cb[nextChar++];
}
}
}
答案 0 :(得分:3)
有(;;)
这是一个无限循环。
例如,它等同于
而(真)
Naturally, to exit such a loop, a branching statement is used.
编辑:显然,使用“无限”这个词是一个糟糕的选择。尽管如此,对于所有意图和目的,for(;;)
循环不会使用典型for
循环的相同条件机制终止。我相信这是问题的关键。这些评论只是在这一点上分裂。
答案 1 :(得分:2)
for(;;)
这是一个infinte循环,没有变量初始化,没有条件检查,没有增量步骤......只有在条件内执行“return”语句时才退出循环。
循环常见:
for(int i = 0 ; i < max ; i++)
希望有所帮助。
答案 2 :(得分:1)
这意味着循环终止的条件不以通常的形式表示。
终止循环的唯一方法是两个return
语句。
答案 3 :(得分:0)
正如@Tom所说,这是一个无限循环。 如果你想永远执行某些东西,你可以在你的程序中使用它。