"自增1"的概念一直有点模糊,求各位大大给讲解下下图和代码快照的原理是一样的吗?我怎么弄不懂代码快照里的逻辑呢。
public class HelloWorld{
public static void main(String[] args) {
int i = 1;
System.out.println(i); //此时“i”为1
i++; //在此之后再出现的“i”是不是就应该是增1之后的结果“2”了?
if (i%3!=0){ //此行的“i”是“2”,但是代码快照里的此处的“i”还是1,为什么呢?
System.out.println(i);
i=i+1; //i=2+1=3
}
System.out.println(i);
}
}
运行结果为:1 2 3 (按此结果来说,我的分析应该对啊?可是为什么在这课里就不一样了呢。
i++是在for后面的()而不是在{}里。
针对快照:你首先得知道for的执行顺序
for(表达式1;表达式2;表达式3)
{
表达式4;
}
for执行的顺序应该是:
第一次(N=1)初始化循。
首先执行表达式表达式1(一般为初始化语句);再执行表达式2(一般为条件判断语句),判断表达式1是否符合表达式2的条件;如果符合,则执行表达式4,否则,停止执行;最后执行表达式3。
第N(N>=2)次循环
首先执行表达式2,判断在表达式3上一次执行后的结果是否符合在表达式2要求;如果符合,则继续执行在表达式4,否则,停止执行。最后执行在表达式3。如此往复,直至表达式3不满足在表达式2条件是为止。
针对上图:
i++; //在此之后再出现的“i”是不是就应该是增1之后的结果“2”了?
此处相当于i=i+1,就是按照执行顺序就到这儿了
这是for循环的一个规定。建议去百度搜for循环流程图,认真看看。
第一次循环sum为1
第二次循环sum为3