& 与
两个运算数都为真时结果为真,只要有一个运算数为假结果就为假,否则就为真。
true & true = true
true & false = false
false & true = false
false & false = false
| 或
只要有一个运算数为真,结果就为真,否则就为假。
true | true = true
true | false = true
false | true = true
false | false = false
! 非
原来为真,结果位假。原来为假,结果就为真。
! true = false
! false = true
^ 异或
相同位假,不同为真。
true ^ true = false
true ^ false = true
false ^ true = true
false ^ false = false
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
实例:
public class Test { public static void main(String[] args) { boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b) ); System.out.println("!(a && b) = " + !(a && b)); } }
运行结果:
a && b = false a || b = true !(a && b) = true
注意(1):
&&:如果前边的表达式的结果为false,则后边的表达式不再运算,整个表达式的结果就确定为false。
实例:
public class YuHuo { public static void main(String[] args) { int a = 5; int b = 6; if(a++ < 4 && ++b == 7) System.out.println(a + " , " + b); // 不输出 else System.out.println(a + " , " + b); // 输出结果为 6 ,6 } }
上面例子说明: && 前面的算式进行了运算,&& 后面的的运算符没有进行运算。
注意(2):
|| :如果前边的表达式的结果为true,则后边的表达式就不再运算,整个表达式的结果就确定为true
实例:
public class Huo { public static void main(String[] args) { int a = 5; int b = 6; if(++a > 5 || ++b == 7) System.out.println(a + " , " + b); // 输出结果:6 , 6 } }
上面例子说明: || 前面的算式进行了运算,而 || 后面的算式没有进行运算。
注意(3):
|| 如果在 && 的前边可以把 && 短路掉
实例:
public class Huo { public static void main(String[] args) { int a = 5; int b = 6; int c = 7; if(++a > 5 || ++b == 7 && ++c == 8 ) System.out.println(a + " , " + b + " , " + c); // 输出结果:6 , 6 , 7 } }
上面例子说明: || 前面算式进行了运算,|| 后面的算式没有进行运算 。
注意(4):
&& 如果在 || 的前边不能把 || 短路掉
实例:
public class DuanLu { public static void main(String[] args) { int a = 5; int b = 6; int c = 7; if(++a < 5 && ++b < 6 || ++c > 7) System.out.println(a + " , " + b + " , " + c); // 输出结果:6 , 6 , 8 } }
上面的例子说明:++a 进行了运算,++b 被 && 短路,但是没有短路 || ,++c 进行了运算。