本人之前对for循环,只知道基本的用法,但是对具体的检查判断条件、变量改变的时机把握的不是很准,尤其是嵌套几层的时候,就更糊涂了,如果面试笔试的时候碰上类似的问题,如果答错就直接悲剧了。
所以特此记录一下,等以后又忘记的时候看看,可以节省很多时间,呵呵。
/**
* initialize
* judge
* print value
* grow
* judge
* print value
* grow
* judge
* print value
* grow
* judge
*/
public class LoopTest1 {
public static void main(String[] args) {
for (int i = getInitValue(); judge(i); i = grow(i)) {
System.out.println("print value");
}
}
private static int grow(int i) {
System.out.println("grow");
return ++ i;
}
private static boolean judge(int i) {
System.out.println("judge");
return i < 3;
}
private static int getInitValue() {
System.out.println("initialize");
return 0;
}
}
总结:
1. i 变量的初始化只执行了一次
2. 第一次循环时,在完成变量初始化之后,进行判断,然后进入代码块
3. 第二次到最后一次循环之前,先改变变量的大小,然后进行判断,最后进入代码块
4. 最后一次循环,改变变量大小,之后判断为假,跳出循环
最后多说一句i++和++i的问题,这两条语句只要不是直接return,或者直接参与到其他的计算当中,起到的作用是等同的,不会有什么不同,即这两条语句对循环体起到的作用是相同的,不会有什么不同的影响,即两条语句在执行之后,变量i都增加了1