Java 中布尔运算符也称逻辑运算符,可以对 boolean 类型(布尔类型)数据进行逻辑上的“与”、“或”、“非”、“异或”等逻辑运算,执行运算后结果还是 boolean 类型,布尔运算符常常用于程序的流程控制。
Java 中布尔运算符包括:
& 逻辑“与”
| 逻辑“或”
! 逻辑“非”
^ 逻辑“异或”
&& 短路与
|| 短路或
下表是 Java 布尔运算的逻辑规则:
a | b | !a | a & b | a | b | a ^ b | a && b | a || b |
true | true | false | true | true | false | true | ture |
true | false | false | false | true | ture | false | true |
false | true | true | false | true | true | false | ture |
false | false | true | false | false | false | false | false |
到这里,有的读者可能会问什么是“短路与”和“短路或”?在一个复杂的逻辑表达式中,程序可以根据第一个操作数的值确定整个逻辑表达式的结果时,跳过对第二个、第三个操作数的计算,直接得出最终结果。例如:
// 短路与 int a = 20, b = 3; if(a > 30 && b > 0 && a > b) { System.out.println("执行"); } else { System.out.println("未执行"); }
上面代码中,条件判断表达式“a > 30 && b > 0 && a > b”当 a > 30 不满足,返回 false 时,整个表达式的返回值肯定是 false,因此不需要计算后续的表达式,这就是短路与。
// 短路或 int a = 20, b = 3; if(a > 0 || b > 0 || a > b) { System.out.println("执行"); } else { System.out.println("未执行"); }
上面代码中,条件判断表达式“a > 0 || b > 0 || a > b”当 a >0 满足,返回 true 时,整个表达式的返回肯定是 true,因此也不需要计算后续的表达式,这就是短路或。
public class Demo { public static void main(String[] args) { boolean a = true, b = false; // 非 System.out.println("!a = " + (!a)); // 与 System.out.println("a & b = " + (a & b)); // 或 System.out.println("a | b = " + (a | b)); // 异或 System.out.println("a ^ b = " + (a ^ b)); } }
运行示例,输出结果如下:
!a = false a & b = false a | b = true a ^ b = true