static boolean foo(char c){
System.out.print(c);
return true;
}
public static void main(String[] args) {
int i =0;
for(foo('A');foo('B')&&(i<2);foo('C')){
i++;
foo('D');
}
} int i = 0;
for (int j = 0; i <2 ; j++) {
i++;
foo('D');
}
int j = 0是初始化条件,只会执行一次;
i<2 是循环条件是,每次循环都会执行判断;
j++是循环后条件,每次循环结束都会执行。
这样看是不是就清楚了,把 int j = 0; 换成 foo('A');把i <2;换成foo('B')&&(i<2);把j++换成foo('C')
所以循环第一次时,i = 0,先执行 int j =0的判断(即执行foo('A')),然后执行 i <2的判断(即foo('B')&&(i<2);)
判断都成立,则执行循环体里面的内容,即 i++ ,然后 foo('D');最后执行 j++(即执行foo('C')) 此时输出 ABDC
第二次循环,此时 i=1,先执行 i <2的判断(即foo('B')&&(i<2););
判断成立,则执行循环体里面的内容,即 i++ ,然后 foo('D');最后执行 j++(即执行foo('C'))。BDC
第三次循环,此时 i=2,执行 i <2 (即执行即foo('B')&&(i<2);)此时foo('B')成立,(i<2)不成立;退出循环。此时只输出了B
最终的输出结果则是 ABDCBDCB