这是什么条件"对于(;;)"环?

时间:2014-10-30 13:14:20

标签: java for-loop conditional-statements

有人可以解释这个for循环的条件是什么吗?

for(;;) {
 //do sth.
}

8 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

条件为空时,它是一个无限循环。

来自java specs如果Expression不存在,则for语句正常完成的唯一方法是使用break语句。因为你没有条件和break因此你的无限循环。

答案 3 :(得分:2)

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

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

由于两者之间没有任何内容,因此无条件无限循环

答案 4 :(得分:2)

它等于:

while(true){
 //do sth.
}

这是一个无限循环。

答案 5 :(得分:2)

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

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

你会得到这个结果:

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

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

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

正如大家所说,这是一个无限循环。查看它是无限循环的简单方法是在字节代码中查看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的标签上方。这个过程永远不会停止。