写出下面程序运行的结果
public class TestFor {
public static void main(String[] args) {
int i = 0;
for(f('A'); f('B') && (i < 2); f('C')) {
i++;
f('D');
}
}
static boolean f(char c) {
System.out.print(c);
return true;
}
}
答案:ABDCBDCB
分析:对于for循环
for(Expression1; Expression2; Expression3) {
statements;
}
执行顺序为:
1.执行初始化语句Expression1,且只会执行一次;
2.执行Expression2:
-
Expression2为false,结束循环;
-
Expression2为true,执行statements,然后执行Expression3;
3.循环执行步骤2,直到Expression2为false,或者循环体内有退出循环的语句(return 或者break);
对于本题,执行顺序为:
- f('A') -> A
- f('B') && (i < 2) -> B (结果为true)
- i++;f('D'); ->D (i = 1)
- f('C') -> C
- f('B') && (i < 2) -> B (结果为true)
- i++;f('D'); ->D (i = 2)
- f('C') -> C
- f('B') && (i < 2) -> B (结果为false)