这个“for(;;)”循环的条件是啥? [复制]

Posted

技术标签:

【中文标题】这个“for(;;)”循环的条件是啥? [复制]【英文标题】:What is the condition for this "for(;;)" loop? [duplicate]这个“for(;;)”循环的条件是什么? [复制] 【发布时间】:2014-12-26 13:14:05 【问题描述】:

谁能解释这个for循环的条件是什么?

for(;;) 
 //do sth.

【问题讨论】:

while(true) 相关:java-infinite-loop-convention 【参考方案1】:

for循环的三个表达式是可选的,可以创建一个无限循环如下:

// Infinite loop
for ( ; ; ) 
   // Your code goes here

【讨论】:

【参考方案2】:

正如大家所说,这是一个无限循环。判断它是一个无限循环的简单方法是查看字节码中的for(;;) 语句。

拿这个参考类:

public class Test 
    public static void main (String[] args)
        for(;;)
    

编译器输出(字节码):

public class Test 
  public Test();
    Code:
       0: aload_0       
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return        

  public static void main(java.lang.String[]);
    Code:
       0:
         goto 0

goto 0 跳转到标签0,它位于行上方。这个过程永远不会停止。

【讨论】:

【参考方案3】:

如果你试图反编译这个简单的程序

for(;;)
    System.out.println("yes");

你会得到这个结果:

do
   System.out.println("yes");
while(true);

我正在使用这个反编译工具:JAD Java Decompiler(不适用于 Java 8+)

【讨论】:

【参考方案4】:

等于:

while(true)
 //do sth.

这是一个无限循环。

【讨论】:

【参考方案5】:

这是一个没有条件的无限循环。 for 循环包含以下语义

for(loop variable initialization ; condition to terminate ; variable increment)

由于两个';'之间没有任何东西,所以它没有条件无限循环

【讨论】:

【参考方案6】:

这是一个无限循环,因为条件为空。

来自 java specs 如果表达式不存在,那么 for 语句可以正常完成的唯一方法是使用 break 语句。因为你没有条件和break,所以你的它是一个无限循环。

【讨论】:

【参考方案7】:

如果测试条件为空(并且在此处),则没有测试并且循环无限期地继续。这是无限循环的简写形式。

【讨论】:

【参考方案8】:

它没有条件。这是一个无限循环。

【讨论】:

以上是关于这个“for(;;)”循环的条件是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的for(;;)后面的括号中的符号是啥意思?

for循环条件里冒号是啥作用

在 for 循环中计数的最佳方法是啥? [复制]

java中的增强for循环,是啥?语法结构和使用得条件?详细解答就加高分。

尽管条件仍然成立,为啥这个 for 循环似乎没有执行?

为啥'for'循环条件失败? [复制]