static boolean foo(int c){
System.out.print(c);
return true;
}
public static void main(String[] args){
int i=0;
for(foo(1);foo(2)&&(i<2);foo(3)){
i++;
foo(4);
}
}
任何for循环:
for(语句1;语句2;语句3)
{
...
}
都可以机械地改写为
语句1
while(语句2)
{
...
语句3
}
比如
for (i = 1; i <= 100; i++)
{
...
}
可以写为
i = 1;
while (i <= 100)
{
...
i++;
}
回到你的问题
for(foo(1);foo(2)&&(i<2);foo(3))
{
i++;
foo(4);
}
就是
foo(1);
while (foo(2)&&(i<2))
{
i++;
foo(4);
foo(3);
}
先执行foo(1)
然后判断foo(2)&&(i<2),这个过程执行了foo(2)
然后执行foo(4) foo(3)
然后判断foo(2)&&(i<2),这个过程执行了foo(2)
然后执行foo(4) foo(3)
然后判断foo(2)&&(i<2),这个过程执行了foo(2),条件不满足,结束。
foo(1)
foo(2)
foo(4)
foo(3)
foo(2)
foo(4)
foo(3)
..........
懂吗
foo(1)
foo(2)
foo(4)
foo(3)
foo(2)
foo(4)
foo(3)
就是这样的
for范式:
for(表达式1;表达式2;表达式3){
循环体;
}
执行顺序:1、先执行表达式1;
2、表达式2的值是否为真,如果为真,则执行循环体,循环体执行完,执行表达式3;执行完表达式3,继续判断表达式2的值;
3、表达式2的值为假,则结束for循环
要理解for循环,最好是自己画一下流程图,就很清楚了
1、foo()是方法,
2、for是循环,
for(初始化条件,循环条件,变化量)
3、这两者本没有什么联系,看你需要是什么
for(int i=0i<4;i++){
if(i=1){
foo(1);
}else if(i=3){
foo(3);
}
}
4、使用switch会更好
这个就是经典的递归一下。
1 2 4 3 2 4 3 2