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



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

for (;;) {
    //Some stuff
}

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

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

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

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

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

基本上是这样执行的——首先,当第一次进入循环时,执行一次初始化语句。然后执行条件检查,看看它的值是否为true。如果是,则执行循环体,否则循环执行结束。之后,执行Update语句。接下来,再次执行条件检查,如果结果为true,则再次执行循环体,然后执行update语句,然后再次执行条件检查....你懂的。

现在关于你的for( ; ; )语法。它没有初始化语句,因此不会执行任何操作。它的条件检查语句也是空的,这意味着在执行循环体之后,它的计算结果为true。接下来,由于update语句为空,因此不执行任何操作。然后再次执行条件检查,其结果将再次为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;

这与:

while(true) {
  //Some Stuff
}

基本上是无限循环的另一种语法

这些都是无限循环

for(;;) {
   // endlessly
}
while(true) {
   // endlessly
}
do {
   // endlessly
} while(true);

这个循环没有保护,作为一个while(true)循环。它将无限循环,直到断点

这是一个无限循环。不是很好的编码,因为它不是直观的,它实际上会编译或不抛出一个运行时错误。将其重写为while(true) { /* code */ }将更易于阅读,以指示无限循环。

这是一个无限循环。初始化语句、条件语句和增量语句都是可选的,所以如果没有这些语句,this将总是再次循环(除非碰到break或其他结构与它交互)。

虽然我不确定Java,这个问题解释了如何在。net中你的空forwhile (true)将被编译成完全相同的东西。如果Java也这样做,我不会感到惊讶。

相关内容

最新更新