今天遇到一题目:
public class Test {
public static boolean p(char a){
System.out.println(a);
return true;
}
public static void main(String[] args) {
int i = 0;
for(p('a'); p('b') && i < 2; p('c')){
i ++;
System.out.println('d');
}
}
}
运行结果:() A、abdcbdcb B、abcdbcdb C、编译出错 D、运行出错
当时我的想法是:for(初始化; 判断条件; 更新变量){}
上面的试题没有在位置上初始化,更新变量,我就选择了C。
回来测试后发现,语法完全没有问题,只要在for循环里出现了";"就可以视为表达式的分割符。也就是说只要有分割符不写东西也是可以编译通过的,如:for(;;){},不过是个死循环。
编译没错,那运行结果呢?肯定也是跟for循环一样的执行顺序。
遇到问题解决了就是进步,继续努力吧!