java基础(for循环)

今天遇到一题目:

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循环一样的执行顺序。

遇到问题解决了就是进步,继续努力吧!

原文地址:https://www.cnblogs.com/ljmin/p/2654666.html