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

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

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

【问题讨论】:

标签: java for-loop conditional-statements


【解决方案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】:

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-03-29
                  • 1970-01-01
                  • 2019-01-09
                  • 2016-12-26
                  • 2018-05-27
                  • 2019-04-19
                  • 1970-01-01
                  相关资源
                  最近更新 更多