短路的布尔运算

布尔运算的一个重要特点是短路。即如果一个布尔运算的表达式能提前确定结果,则后续的计算不再执行,直接返回结果。
比如 false && x ,无论x是true还是false,结果肯定是false。因此,布尔运算在确定第一个值为false后,不再继续计算x,而是直接返回false。

下面程序输出结果为false。如果没有短路,&&后面的表达式会由于除数为0而报错,但实际上该语句并未报错,原因是后面的 (5 / 0 > 0) 不会被执行。

public class Main {
    public static void main(String[] args) {
        boolean b = 5 < 3;
        boolean result = b && (5 / 0 > 0);
        System.out.println(result);
    }
}

如果不是布尔运算,除数为0会报异常 java.lang.ArithmeticException: / by zero

类似的,对于 || 运算,只要能确定第一个值为true,后续计算也不再进行,而是直接返回true。

boolean result = true || (5 / 0 > 0); // true

他の者にできたか?ここまでやれたか?この先できるか?いいや、仆にしかできない!

目录
×

喜欢就点赞,疼爱就打赏