别直接编译运行,猜猜结果是什么。直接回复结果再自己运行。
public class Test {
static boolean foo(char c) {
System.out.print(c);
return true;
} public static void main(String[] argv) {
int i = 0;
for (foo('A'); foo('B') && (i < 2); foo('C')) {
i++;
foo('D');
}
}
}
public class Test {
static boolean foo(char c) {
System.out.print(c);
return true;
} public static void main(String[] argv) {
int i = 0;
for (foo('A'); foo('B') && (i < 2); foo('C')) {
i++;
foo('D');
}
}
}
for( a ; b ; c)
for循环中,a处在刚进入循环时运行,之后就不运行了。因此A只输入一次
b处的条件语句在循环体每运行一次执行一次。
c处的在b处条件为true的时候才运行。b处为false时就不运行了
因此 把输出结果隔开来看比较清楚。
A BDC BDC B
应该是这样
A是for循环初始化
B是判断
为真输出D
然后执行输出C
然后继续判断输出B
为真再输出B
并输出D
然后执行输出C
再一次判断输出B
i等于2
循环结束
猜对了,O(∩_∩)O~
第二次直接执行条件foo('B') && (i < 2),为true就进入方法题,然后执行foo('C') ,输出BDC
第三次循环,执行foo('B') && (i < 2)为false,就跳出循环,结束 ,输出B所以结果为ABDCBDCB
ABDCBDCB
我不去运行咯