For循环自动增量变量

时间:2019-10-13 11:33:57

标签: java for-loop

for(int i=0; i < 5; i++)循环中,在printf读取之前,i是否还没有增加i++?如果是这样,它应该返回i=1对吗?首先返回0的概念是什么?

public class Application {
    public static void main(String[] args) {

        for(int i=0; i < 5; i++) {
            System.out.printf("The value of i is: %d\n", i);
        }
    }
}

4 个答案:

答案 0 :(得分:2)

  

14.14.1. The basic for Statement

BasicForStatement:
    for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement
     
      
  • 如果不存在表达式,或者存在表达式,并且其求值结果(包括任何可能的拆箱)为true,则执行包含的Statement。然后有一个选择:

         
        
    • 如果该语句的执行正常完成,则将依次执行以下两个步骤:

           
          
      • 首先,如果存在ForUpdate部分,则按从左到右的顺序对表达式求值;其值(如果有)将被丢弃。如果任何表达式的求值由于某种原因突然完成,则for语句由于相同的原因而突然完成;突然完成的表达式右边的任何ForUpdate语句表达式都不会被评估。

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

      •   
    •   
  •   

在您的示例中,这意味着i++将在System.out.printf行之后执行。

答案 1 :(得分:0)

否,循环增量是在循环主体的末尾计算的。

答案 2 :(得分:0)

行为与

相同
 for(int i=0; i < 5; ) {
            System.out.printf("The value of i is: %d\n", i);
           //whatever


           //at the very end; just before exiting the loop 
           i = i + 1;
           // exit the loop
        }

答案 3 :(得分:0)

首先在for循环中,循环检查仅在i <5时运行。因为它为true,所以它将访问仍然i保持为零(0)的循环并在循环中执行语句,然后递增i乘以一个(i ++)。然后,递增的i将被考虑为条件。