Java:什么是“for(;;)”

时间:2010-05-22 14:59:36

标签: java

请有人向我解释这条指令: for(;;)

我遇到了几种这样的标记(比如在facebook的ajax代码和Java的并发代码中)。

6 个答案:

答案 0 :(得分:23)

无限循环。

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(;;)省略所有三个部分。然后你有一个循环:

  • 没有初始化(第一部分)
  • 没有停止条件(中间部分)
  • 在每次迭代后(最后一部分)
  • 不执行任何操作

所以基本上是一个无限循环。它只是在循环体中一次又一次地执行它所说的

答案 1 :(得分:6)

这是一个无限循环。有关for语句的详细信息,请参阅here

答案 2 :(得分:5)

这是一个无限循环,类似于

while(true)
{
    ...
}

答案 3 :(得分:2)

它是一个无限循环,看到(不存在的)退出条件永远不会是假的。

任何没有退出条件的for循环都将是无限的:

for (int x=0; ; x++) { }

while (true)完全相同,虽然可怜的恕我直言。

答案 4 :(得分:2)

这确实是一个无限循环。但是在Java中你应该更喜欢while (true)而不是for (;;),因为它更具可读性(你可能已经意识到)。无论如何,编译器将对其进行优化。在JavaScript中,没有编译器和HTTP上的每个字节计数,这就是为什么for (;;)是首选的原因。它可以节省几个字符(字节)。

答案 5 :(得分:2)

for循环的语法是

for (init-stmt; condition; next-stmt) {

}

所以它只是一个没有初始语句,下一个语句或条件的for循环。缺乏退出条件使其无限。