文章目录
1. 逻辑运算符
1.1 定义
用于连接多个条件 / 多个关系表达式,最终的结果也是一个boolean值。
1.2 6种逻辑符号的运算规则:【背】
- 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
2. 短路与 + 逻辑与
2.1 &&和&的案例
public class var01 {
//编写一个main方法
public static void main(String[] args) {
//&& 和 ?& 的案例演示
int age = 50;
if(age > 20 && age < 90) {
System.out.println("ok100"); //输出ok100
}
if(age > 20 && age < 30) {
System.out.println("ok100"); //不输出
}
}
}
2.2 && 和 & 的区别:
(1)&&:如果第一个条件为 false,则第二个条件不会执行,最终结果为 false,效率高。
(2)&:不管第一个条件是否为 false,第二个条件也要判断,效率低。
public class var01 {
//编写一个main方法
public static void main(String[] args) {
//区别
// &&
int a = 4;
int b = 9;
if(a < 1 && ++b < 50) {
System.out.println("ok300");
}
System.out.println("a=" + a + "b=" + b); //输出a=4b=9,&&后不运行
// &
if(a < 1 & ++b < 50) {
System.out.println("ok300");
}
System.out.println("a=" + a + "b=" + b); //输出a=4b=10,&&后运行
}
}
}
3. 短路或 + 逻辑或
3.1 案例
public class var01 {
//编写一个main方法
public static void main(String[] args) {
//演示
int age = 50;
if(age > 20 || age < 30) {
System.out.println("ok100");
} //输出ok100
if(age > 20 | age < 30) {
System.out.println("ok200");
} //输出ok200
//看看区别
int a = 4;
int b = 9;
if(a>1||++b>4) {
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b); //a=4b=9
if(a>1|++b>4) {
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b); //a=4b=10
}
}
3.2||和|的区别
(1)||:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高。
(2)|:不管如何都会判断2个条件,只要有一个true,最终结果就为true,效率低。
(3)开发中,我们基本使用短路或
4. 逻辑非 + 逻辑异或
4.1 取反
- 基本规则:
如果条件true,结果为false。如果条件false,结果为true。
public class var01 {
//编写一个main方法
public static void main(String[] args) {
// !取反案例
System.out.println(60 > 20); //输出true
System.out.println(!(60 > 20)); //输出false
}
}
}
4.2 逻辑异或
- 基本原则:
当a和b不同时,结果为true,否则为false。
public class var01 {
//编写一个main方法
public static void main(String[] args) {
// ^逻辑异或案例
boolean b = (10 > 1) ^ (3 < 5);
System.out.println("b=" + b); //输出false (ab相同)
boolean b = (10 > 1) ^ (3 > 5);
System.out.println("b=" + b); //输出ture (ab不同)
}
}
}
5. 练习
- 易错笔记:
(1)x++ ==6 :先比较,再++。
++y ==6 : 先++,再比较。
(3)if条件为true,后面要运行,所以x=5 --> 6 --> 11。
- 易错笔记:
(1)y=true这个是赋值表达,所以它为true。
(2)if条件为true,后面的code要执行。
(3)x=false是赋值表达,所以它也为false。