作者在近日使用for循环的过程中遇到了一个疑问,给大家分享出来,依旧尽量通过白话解释,希望能为大家提供一点点帮助
int a = 0,b = 0;
for (a = 0; a < 1; a++){
System.out.println(a);
}
for (b = 0; b < 1; ++b){
System.out.println(b);
}
两个循环,一个使用a++自增,一个使用++b自增,按照作者原先的理解,基于i++与++i的特性,此时打印出的a应该为0,b应该为1
不过实际情况却大不相同,两者运行出来都打印的是0
作者于是对于for循环的执行顺序产生了疑问,难道不是按顺序将小括号内部的语句执行完毕再执行循环体内部语句吗?
经过作者多方查证,实际上for循环语句的执行顺序按照以下语句为:语句1->语句2->循环体内部语句->语句3->语句2......
for(语句1;语句2;语句3){
循环体内部语句
}
即逻辑为:先进行变量的初始化,之后判断是否符合条件,若符合,执行循环体,循环体执行结束再进行自增,如此结束一次循环,再次判断是否符合条件,等等。
因此,在for循环的自增中,不论使用i++还是++i,都是在执行完循环体之后才进行的自增,因此本文最开头的例子运行结果就像上面截图一样