请解释一下,为什么下面的代码会无限循环

时间:2019-09-11 10:48:00

标签: java

为什么下面的代码会进行无限循环?为什么不抛出编译时错误?

public class Main {
    public static void main(String[] args) {
       for(;;){
           System.out.println("while loop");
       }
    }
}

1 个答案:

答案 0 :(得分:3)

syntax of a basic for loop is

BasicForStatement:
    for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement

[]ForInitExpression周围的ForUpdate表示所有这些都是可选的。

正因为如此,for (;;) { /* something */ }是有效的语法,所以不会导致编译时错误。

然后(强调):

  

如果不存在表达式,或者存在并且值为   经过评估(包括可能的拆箱),结果是   是,然后执行包含的语句。然后有一个   选择:

     
      
  1. 如果该语句的执行正常完成,则执行以下操作   依次执行两个步骤:

         
        
    • 首先,如果存在ForUpdate部分[不存在,请省略此部分]

           

      如果不存在ForUpdate部分,则不执行任何操作

    •   
    • 第二,执行另一个迭代步骤

    •   
  2.   

Expression不存在,Statement正常完成:因此要执行另一个迭代步骤。

这是一种说法:您有一个无限循环,因为没有什么可以阻止它继续执行。