虽然知道它为什么不出错 .但是不明白它输出的结果,它的运行过程是什么.
public class Demo_8_0 {
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');
}
}
}答案是 ABDCBDCB
public class Demo_8_0 {
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');
}
}
}答案是 ABDCBDCB
int i=0;for(int j=0;j<4&&i<2;j++){}第一次进for j=0; ==> foo('A') 结果A j<4 i=0 <2 true ==> foo('B') 结果Bi++ i=1;foo('D') 结果D第二次 进for j++ ==> foo('C') 结果C j=1 j<4 true ==> foo('B') 结果Bi=1 i<2 true i++ i=2;foo('D') 结果D第三次 进forj++ ==> foo('C') 结果Cj=1 j<4 true ==> foo('B') 结果Bi=2 i<2 false 不执行了,跳出for
B:判断for循环条件是否为真,当然就执行foo('B')
D:进入循环,i++后变为1。然后执行foo('D')
C:第1次循环结束,执行循环变量变化的操作,也就是for括号里最后的部分,foo('C')
B:再次判断是否满足第2次循环的条件,首先还是执行foo('B'),为真,则再看后面的条件,由于i=1,比2小,所以继续执行。
D:循环里的foo('D')
C:同上
B:再次判断是否满足第3次循环条件,执行foo('B'),然后i已经为2,不没满足条件,程序退出