逻辑运算符
参与逻辑运算的都是布尔类型,即要么是true,要么是false,运算结果也是布尔类型。
下面我们来看一下运算规则,假设a,b都是布尔类型。
运算符 | 含义 | 使用 | 规则 |
---|---|---|---|
& | 逻辑与 | a & b | 两边都为true,结果为true,否则为false |
| | 逻辑或 | a | b | 两边有一个为true,结果为true,否则为false |
^ | 逻辑异或 | a ^ b | 两边一个为true,一个为false,结果为true,否则为false |
&& | 短路与 | a && b | 两边都为true,结果为true,否则为false |
|| | 短路或 | a || b | 两边有一个为true,结果为true,否则为false |
! | 取反 | !a | !false=true,!true=false |
&& 和 & 的区别:
&& 和 &,都是同真为真,有一个假则为假,区别就在于:&& 如果前面结果为假,不会再执行后面的判断;& 不论前面结果是否为假,还会执行后面的判断,效率比较低,所以工作中常用的是短路与&&。
int a = 1,b = 3;
System.out.println(a > b && a++ > b); //false
System.out.println(a); //1
int m = 1,n = 3;
System.out.println(m > n & m++ > n); //false
System.out.println(m); //2
|| 和 | 的区别:
|| 和 |,都是有一个真则为真,否则为假,区别就在于:|| 不论前面结果是否为真,还会执行后面的判断
int a = 1,b = 3;
System.out.println(b > a || a++ < b); //true
System.out.println(a); //1
int m = 1,n = 3;
System.out.println(n > m | m++ > n); //true
System.out.println(m); //2