1、逻辑运算符包含3种:与 (多个条件一起满足)、或 (多个条件有一个满足)、非 (使用 “!”操作,可以实现 true与 false的相互转换)。
逻辑运算符
NO. 逻辑运算符 描 述
1 & AND,与
2 && 短路与
3 | OR,或
4 || 短路或
5 ! 取反,true变 false变 true
2、通过逻辑运算符可以实现若干个条件的连接。
与、或真值表
NO. 条件1 条件2 &、&& (与) |、|| (或)
1 true true true true
2 true false false true
3 false true false true
4 false false false false
例43:使用 “非”运算符
public class JavaDemo038 {
public static void main(String[] args) {
boolean flag = !(1 > 2);// 1 > 2的结果为 false,取非后为 true
System.out.println(flag);
}
}
3、“与”逻辑的主要的特征是进行若干个判断条件的连接,并且如果所有的条件都返回 true的时候,最终才会返回 true;有个条件为 false,则最终的结果就为 false。
例44:“与”逻辑运算符
public class JavaDemo039 {
public static void main(String[] args) {
int x = 1;
int y = 1;
System.out.println(x == y && 2 > 1);// 输出逻辑运算结果
}
}
4、关于 “&” 和 “&&” 的区别:
“与”逻辑的操作需要若干判断条件全部返回 true,最终结果才为 true;如果有一个判断条件为 false,那么不管有多少个 true最终的结果一定就是 false。
- 普通与逻辑 (&):所有的判断条件都进行判断。
- 短路与逻辑 (&&):如果前面的判断条件返回了 false,直接中断后续的判断条件执行,最终的结果就是 false。
例45:使用普通 “与”逻辑运算符
public class JavaDemo040 {
public static void main(String[] args) {
// 条件1:“1 > 2”返回 false
// 条件2:“10 / 0 == 0”,执行时会出现 ArithmeticException异常导致程序中断
System.out.println(1 > 2 & 10 / 0 == 0);
}
}
5、在程序中任何数字除以0都会产生 ArithmeticException算数异常信息。
例46:使用短路 “与”逻辑运算符
public class JavaDemo041 {
public static void main(String[] args) {
// 条件1:“1 > 2” 返回 false
// 条件2:“10 / 0 == 0”,执行时会出现 ArithmeticException异常导致程序中断
System.out.println(1 > 2 && 10 / 0 == 0);
}
}
6、总结:短路 “与”的判断性能要比普通 “与”好。
7、“或”逻辑运算也可以连接若干个判断条件,在这若干个判断条件中有一个判断结果为 true,则最终的结果就是 true。
例47:“或”逻辑运算
public class JavaDemo042{
public static void main(String[] args){
int x = 1;
int y = 1;
System.out.println(x != y || 2 > 1);
}
}
8、关于 “|” 和 “||” 的区别:
“或”逻辑运算的操作特点是若干个判断条件有一个返回了 true,那么最终的结果就是 true。
- 普通 “或”逻辑 (|):所有的判断条件都执行。
- 短路 “或”逻辑 (||):若干个判断条件如果有判断条件返回了true,那么后续的条件将不再判断,最终的结果就是 true。
例48:普通 “或”逻辑运算
public class JavaDemo043 {
public static void main(String[] args) {
// 条件1:“1 !=2”返回 true
// 条件2:“10 / 0 == 0”,执行时会出现 ArithmeticException异常导致程序中断
System.out.println(1 != 2 | 10 / 0 == 0);
}
}
例49:短路 “与”逻辑运算
public class JavaDemo044 {
public static void main(String[] args) {
// 条件1:“1 != 2”返回 true
// 条件2:“10 / 0 == 0”,执行时会出现 ArithmeticException异常导致程序中断
System.out.println(1 != 2 || 10 / 0 == 0);
}
}
最美不过伊人笑
发布了37 篇原创文章 · 获赞 13 · 访问量 8611
私信
关注