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

2022-08-31 13:47:42

浏览一些旧的公司代码,我遇到了一个看起来像这样的for循环:

for (;;) {
    //Some stuff
}

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


答案 1

Java中的循环具有以下结构 -for

for (initialization statement; condition check; update)
    loop body;

如您所见,这里有四个语句 -

  1. 初始化语句:此语句仅在首次进入循环时执行一次。这是一个可选语句,这意味着您可以选择将此字段留空。它通常用于某些初始化目的。
  2. 条件检查:此语句可能是最重要的语句。它检查以验证某些表达式的计算结果是否为 true。如果是,则循环执行继续。您可以选择将此字段保留为空,该字段将计算为 。true
  3. 更新:此语句列表从左到右执行,通常用于递增/递减某些变量。
  4. 循环正文:循环的主体,将根据条件检查的真值一次又一次地执行。

基本上,这就是执行方式 - 首先,当第一次进入循环时,初始化语句执行一次。然后执行条件检查以查看其是否计算为 true。如果是,则执行循环正文,否则循环执行完成。之后,将执行更新语句。接下来,再次执行条件检查,如果它的计算结果为 true,则再次执行循环体,然后执行 update 语句,然后再次执行条件检查。你明白了。

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

所以你看,这基本上是一个无限循环,它没有初始化语句,其条件检查将始终计算为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;

答案 2

这与以下内容相同:

while(true) {
  //Some Stuff
}

基本上,无限循环的替代语法。