在浏览一些旧的公司代码时,我偶然发现了一个 for 循环,它看起来像这样:
for (;;) { //Some stuff }
我试过谷歌,但找不到任何答案。我是在编程课上睡着了,还是这是一个不寻常的循环?
这与:
while(true) { //Some Stuff }
基本上就是无限循环的替代语法。
这个循环没有保护,充当 while (true)循环。它将无限循环直到中断。
这是个无限循环。初始化、条件和增量语句都是可选的,因此如果没有其中任何一个,这个语句总是会再次循环(除非中断或其他构造与之交互)。
虽然我对 Java 不是很确定,但是 这个问题解释了如何在。净你的空 for和一个 while (true)将被编译为完全相同的事情。如果 Java 也能做到这一点,我不会感到惊讶。
for
while (true)
这是个无限循环。不完全是好的代码,因为它不是直观的,实际上是编译或不抛出运行时错误。将其重写为 while(true) { /* code */ }将更易于理解,以表明存在无限循环。
while(true) { /* code */ }
Java 中的 for循环具有以下结构-
for (initialization statement; condition check; update) loop body;
正如你所看到的,这里有四个陈述-
true
基本上这就是执行的方式——首先,当第一次输入循环时,执行一次初始化语句。然后执行条件检查,看它是否计算为真。如果是,则执行循环体,否则完成循环执行。然后,执行 Update 语句。接下来,再次执行条件检查,如果计算结果为 true,那么再次执行循环体,然后执行 update 语句,然后再次执行条件检查... ... 就得到了图片。
现在介绍 for( ; ; )语法。它没有初始化语句,因此不执行任何操作。它的条件检查语句也是空的,这意味着在执行循环体之后它的计算结果为 true。接下来,由于 update 语句为空,因此不执行任何操作。然后再次执行条件检查,它将再次计算为真,然后整个过程将再次重复。
for( ; ; )
所以,你看,这基本上是一个无限循环,它没有初始化语句,它的条件检查总是计算为真,它没有更新语句。这相当于
while(true) { ..... }
这是 Java 中另一个流行的循环结构。
当您使用这样的无限循环时,重要的是要注意中断条件,因为在大多数情况下,您不能让循环无限期地运行。要打破这种循环,可以使用 break语句。结构如下-
break
if(some_condition_is_true) break; // This will cause execution to break out of its nearest loop
或者
if(some_condition_is_false) break;
这些都是无限循环
for(;;) { // endlessly } while(true) { // endlessly } do { // endlessly } while(true);