一尘不染

Javafor循环(特别是for(;;))如何工作?

java

通过一些旧的公司代码,我遇到了一个如下所示的for循环:

for (;;) {
    //Some stuff
}

我尝试了Google,但找不到任何答案。我是在编程课上睡着了还是这是一个不寻常的循环?


阅读 441

收藏
2020-03-08

共1个答案

一尘不染

一个for在Java循环结构如下-

for (initialization statement; condition check; update)
loop body;
如你所见,这里有四个语句-

  1. 初始化语句:第一次进入循环时,该语句仅执行一次。这是一个可选语句,表示你可以选择将此字段保留为空白。它通常用于某些初始化目的。
  2. 有条件的检查:此语句可能是最重要的。它检查以验证某些表达式的计算结果是否为true。如果是,则循环执行继续。你可以选择将此字段保留为空,并将其评估为true。
  3. 更新:此语句列表从左到右执行,通常用于递增/递减某些变量。
  4. 循环主体:循环的主体,将根据条件检查的真值一次又一次地执行。
    基本上,这就是执行过程的方式-首先,当首次进入循环时,初始化语句执行一次。然后执行条件检查以查看其评估结果是否为true。如果是,则执行循环体,否则循环执行完成。之后,将执行Update语句。接下来,再次执行条件检查,如果评估结果为true,则再次执行循环主体,然后执行update语句,然后再次执行条件检查…。

现在介绍你的for( ; ; )语法。它没有初始化语句,因此将不会执行任何操作。它的条件检查语句也是空的,这意味着在执行循环体之后它的评估结果为true。接下来,由于更新语句为空,因此不执行任何操作。然后再次执行条件检查,这将再次评估为true,然后整个过程将再次重复。

因此,你看到的是,这基本上是一个无限循环,没有初始化语句,其条件检查将始终为true,并且没有更新语句。这相当于-

while(true)
{
    .....
}

这是Java中另一个流行的循环构造。

当使用这样的无限循环时,请务必注意中断条件,因为在大多数情况下,你不能让循环无限期地运行。要打破这些循环,可以使用break语句。结构如下-

if(some_condition_is_true)
    break;        // This will cause execution to break out of its nearest loop

要么

if(some_condition_is_false)
    break;
2020-03-08