🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### [短路](https://lingcoder.gitee.io/onjava8/#/book/04-Operators?id=%e7%9f%ad%e8%b7%af) 逻辑运算符支持一种称为“短路”(short-circuiting)的现象。整个表达式会在运算到可以明确结果时就停止并返回结果,这意味着该逻辑表达式的后半部分不会被执行到。代码示例: ~~~ // operators / ShortCircuit.java // 逻辑运算符的短路行为 public 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; } public static void main(String[] args) { boolean b = test1(0) && test2(2) && test3(2); System.out.println("expression is " + b); } } ~~~ 输出结果: ~~~ test1(0) result: true test2(2) result: false expression is false ~~~ 每个测试都对参数执行比较并返回`true`或`false`。同时控制台也会在方法执行时打印他们的执行状态。 下面的表达式: ~~~ test1(0)&& test2(2)&& test3(2) ~~~ 可能你的预期是程序会执行 3 个**test**方法并返回。我们来分析一下:第一个方法的结果返回`true`,因此表达式会继续走下去。紧接着,第二个方法的返回结果是`false`。这就代表这整个表达式的结果肯定为`false`,所以就没有必要再判断剩下的表达式部分了。 所以,运用“短路”可以节省部分不必要的运算,从而提高程序潜在的性能。