在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);
}
}
}
答案 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将被考虑为条件。