当使用逻辑运算符时,我们会遇到一种“短路”的现象。即一旦能够准确无误的确定整个表达式的值,就不再计算表达式余下的部分了。因此整个表达式靠后的部分有可能不被运算
/**短路 * @param args */ public static void main(String[] args) { boolean b=test1(0)&&test2(2)&&test3(2); System.out.println("expression is "+b); } 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; }
上述代码中当test2为false时,整个表达式的结果已经确定,后续的test3是不会被执行的。这样可以提升代码的性能