目录
逻辑运算符
逻辑运算符用于对布尔类型的数据进行操作,其结果仍是一个布尔型数据。
运算符 | 运算 | 范例 | 结果 |
& | 与 | true&true | true |
true&false | false | ||
false&true | true | ||
false&false | false | ||
&& | 短路与 | true&true | true |
true&false | false | ||
false&true | true | ||
false&false | false | ||
| | 或 | true | true | true |
true | false | true | ||
false | true | true | ||
false | false | false | ||
|| | 短路或 | true || true | true |
true || false | true | ||
false || true | true | ||
false || false | false | ||
^ | 异或 | true^true | false |
true^false | true | ||
false^true | true | ||
false^false | false | ||
! | 非 | !true | false |
!false | true |
练习:
public class TestOpe11{ public static void main(String[] args){ //逻辑与:& 规律:全对为对。 System.out.println(true&true); //true System.out.println(true&false); //false System.out.println(false&true); //false System.out.println(false&false); //false //短路与:&& 规律:全对为对 //只要左边表达式是false,右边的表达式不会进行运算,结果为false。 System.out.println(true&&true); //true System.out.println(true&&false); //false System.out.println(false&&true); //false System.out.println(false&&false); //false //逻辑或:| 规律:任一为true,结果为true。 System.out.println(true|true); //true System.out.println(true|false); //true System.out.println(false|true); //true System.out.println(false|false); //false //短路或:|| 规律:任一为true,结果为true。 //只要左边表达式是true,右边的表达式不会进行运算,结果为true。 System.out.println(true||true); //true System.out.println(true||false); //true System.out.println(false||true); //true System.out.println(false||false); //false //逻辑异或:^ 规律:运算符两边的布尔值不同时,结果为true。 System.out.println(true^true); //false System.out.println(true^false); //true System.out.println(false^true); //true System.out.println(false^false); //false //逻辑非:! 规律:相反结果。 System.out.println(!true); //false System.out.println(!false); //true } }
运行结果:
-
&和&&
相同点:运算符&和&&都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。
不同点:在使用&进行运算时,不论左边为true或者false,右边的表达式都会进行运算。
如果使用&&进行运算时,当左边为false时,右边的表达式不会进行运算,因此&&被称作短路与。
练习:
public class TestOpe12{ public static void main(String[] args){ //左边为false int a=8; System.out.println((5>7)&(a++==2)); //false System.out.println("a="+a); //i=9 int b=8; System.out.println((5>7)&&(b++==2)); //false System.out.println("b="+b); //左边表达式为flase,右边表达式不进行运输算 i=8 //左边为true int m=8; System.out.println((5<7)&(m++==2)); //false System.out.println("m="+m); //i=9 int n=8; System.out.println((5<7)&&(n++==2)); //false System.out.println("n="+n); //i=9 } }
运行结果:
-
|和||
相同点:运算符|和||都表示或操作,当且算符两边的操作数任意一边的值为true时,其结果才为true,当两边的值都为false时,其结果为false。
不同点:在使用|进行运算时,不论左边为true或者false,右边的表达式都会进行运算。
如果使用||进行运算时,当左边为true时,右边的表达式不会进行运算,因此||被称作短路或。