1、介绍
用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。
2、逻辑运算符一览
分为两组
-
短路与 &&,短路或 ||。取反 !
-
逻辑与 & 逻辑或 | 。逻辑异或
a | b | a & b | a && b | a | b | a || b | !a | a ^ b |
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
说明逻辑运算规则:
-
a&b:&叫逻辑与:规则:当a和b同时为true,则结果为true,否则为false。
-
a&&b:&&叫短路与:规则:当a和b同时为true,则结果为true,否则为false。
-
a|b:叫逻辑或:规则:当a和b,有一个为true,则结果为true,否则为false。
-
a||b:叫短路或:规则:当a和b,有一个为true,则结果为true,否则为false。
-
!a:叫取反,或者非运算。当a为true,则结果为false,当a为false,结果为true
-
a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false。
3、&& 和 & 基本原则
名称 | 语法 | 特点 |
短路与&& | 条件1&&条件2 | 两个条件都为true,结果为true,否则为false。 |
逻辑与& | 条件1&条件2 | 两个条件都为true,结果为true,否则为false。 |
/**
* 演示逻辑运算符的使用
*/
public class LogicOperator01 {
//编写一个 main 方法
public static void main(String[] args) {
//&&短路与 和 & 案例演示
int age = 50;
if(age > 20 && age < 90) {
System.out.println("ok100");
}
//&逻辑与使用
if(age > 20 & age < 90) {
System.out.println("ok200");
}
//区别
int a = 4;
int b = 9;
//对于&&短路与而言,如果第一个条件为 false ,后面的条件不再判断
//对于&逻辑与而言,如果第一个条件为 false ,后面的条件仍然会判断
if(a < 1 & ++b < 50) {
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);// 4 10
}
}
4、&& 和& 使用区别
-
&&短路与:结果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高。
-
&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低。
-
开发中,我们使用的基本时使用的短路与&&,效率高。
5、|| 和 | 基本规则
名称 | 语法 | 特点 |
短路或|| | 条件1||条件2 | 两个条件只要有一个成立,结果true,否则为false。 |
逻辑或| | 条件1|条件2 | 只要有一个条件成立,结果为true,否则为false。 |
//演示| || 使用
public class LogicOperator02 {
//编写一个 main 方法
public static void main(String[] args) {
//||短路或 和 |逻辑或 案例演示
//|| 规则: 两个条件中只要有一个成立,结果为 true,否则为 false
//| 规则: 两个条件中只要有一个成立,结果为 true,否则为 false
int age = 50;
if(age > 20 || age < 30) {
System.out.println("ok100");
}
//&逻辑与使用
if(age > 20 | age < 30) {
System.out.println("ok200");
}
//看看区别
//(1)||短路或:如果第一个条件为 true,
//则第二个条件不会判断,最终结果为 true,效率高
//(2)| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
int a = 4;
int b = 9;
if( a > 1 || ++b > 4) { // 可以换成 | 测试
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b); //4 10
}
}
6、|| 和 | 使用区别
-
||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高。
-
|逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低。
-
开发中,我们基本使用||。
7、!取反 基本规则
名称 | 语法 | 特点 |
!非(取反) | !条件 | 如果条件本身成立,结果为false,否则为true。 |
//!和^案例演示
public class InverseOperator {
//编写一个 main 方法
public static void main(String[] args) {
//! 操作是取反 T->F , F -> T
System.out.println(60 > 20); //T
System.out.println(!(60 > 20)); //F
//a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
boolean b = (10 > 1) ^ ( 3 > 5);
System.out.println("b=" + b);//T
}
}