Java逻辑运算符的"短路"现象

最近再次阅读《Java编程思想》此书,发现逻辑运算符这里讲解"短路"现象的示例很好,特此记录下来,以供之后经常阅读。代码如下:

public class TestJava {

    public static void main(String[] args) {

        System.out.println("----------&&的短路测试----------");
        boolean a = ShortCircuit.test1(0) && ShortCircuit.test2(2) && ShortCircuit.test3(1);
        System.out.println("a:" + a);
        System.out.println("----------||的短路测试----------");
        boolean b = ShortCircuit.test1(1) || ShortCircuit.test2(1) || ShortCircuit.test3(4);
        System.out.println("b:" + b);
    }
}

class ShortCircuit {
    static boolean test1(int val) {
        System.out.println("test1(" + val + ")");
        System.out.println("result:" + (val < 1));
        return val < 1;
    }

    static boolean test2(int val) {
        System.out.println("test2(" + val + ")");
        System.out.println("result:" + (val < 2));
        return val < 2;
    }

    static boolean test3(int val) {
        System.out.println("test3(" + val + ")");
        System.out.println("result:" + (val < 3));
        return val < 3;
    }
}

运行结果如下:

----------&&的短路测试----------
test1(0)
result:true
test2(2)
result:false
a:false
----------||的短路测试----------
test1(1)
result:false
test2(1)
result:true
b:true

你可能感兴趣的:(Java)