短路的意思就是惰性运算,当符号左边的式子已经可以确认最后结果时,符号右边的式子就不进行计算了。
短路与是Java语言中的一个逻辑运算符,记作&&,与编程语言中的与(&)相似,但是具有短路性质:在使用&进行运算时,不论左边为true或者false,右边的表达式都会进行运算,而如果使用&&进行运算,当左边为false时,右边的表达式不会进行运算,因此&&被称为短路与。
短路或是Java语言中的一个逻辑运算符,记作||,与编程语言中的或(|)相似,但是具有短路性质:在使用|进行运算时,不论左边为true或者false,右边的表达式都会进行运算,而如果使用||进行运算,当左边为true时,右边的表达式不会进行运算,因此||被称为短路或。
短路与和短路或的验证:
import java.util.Random;
/**
* copyright(c)2021 zbh.ALL rights Reserved
* <p>
* 描述:
*
* @author zbh
* @version 1.0
* @date 2021/2/23
*/
public class Demo1 {
public static void main(String[] args) {
// 验证短路与
System.out.println("短路与:");
boolean result = A() && B();
System.out.println("---------------");
// 验证短路或
System.out.println("短路或:");
result = A() || B();
System.out.println("---------------");
// 验证与
System.out.println("与:");
result = A() & B();
System.out.println("---------------");
// 验证或
System.out.println("或:");
result = A() | B();
}
private static boolean A() {
System.out.println("enter A");
boolean result = false;
// 生成随机的true和false
Random random = new Random();
result = random.nextBoolean();
// 输出返回的boolean类型是true还是false
System.out.println("A:"+result);
return result;
}
private static boolean B() {
System.out.println("enter B");
boolean result = false;
// 生成随机的true和false
Random random = new Random();
result = random.nextBoolean();
// 输出返回的boolean类型是true还是false
System.out.println("B"+result);
return result;
}
}
运行结果:
由结果可得,当A()返回的是false,运行的是短路与时,B()并没有执行。当A()返回的是true,运行的是短路或时,B()没有执行。当执行与和或时,无论A()返回什么,B()都会执行。
总结
-
对于与来说,要求所有的条件都要判断。
-
对于短路与来说,如果第一个条件为false,则后面的条件不再判断。
-
对于或来说,要求所有的条件都要判断。
-
对于短路或来说,如果第一个条件为true,则后面的条件不在判断。