首先我们需要知道java中逻辑运算符有哪些第一部分: &(逻辑与),|(逻辑或),^(逻辑异或),!(逻辑非)第二部分: &&(逻辑与 ,与&作用一致,但是运算形式不同),||(逻辑或,与|作用一致,但运算形式不同)a. 逻辑运算符的基本用法逻辑运算符一般用于连接boolean类型的表达式或者值。语法: 布尔表达式 & 布尔表达式布尔表达式 | 布尔表达式
布尔表达式 ^ 布尔表达式!布尔表达式布尔表达式 && 布尔表达式布尔表达式 || 布尔表达式
b. 结论:&逻辑与:有false则false。|逻辑或:有true则true。^逻辑异或:相同为false,不同为true。!逻辑非:非false则true,非true则false。特点:偶数个不改变本身。第一部分:&(逻辑与),|(逻辑或),^(逻辑异或),!(逻辑非)案例:
class Demo1_Operator {
public static void main(String[] args) {
//&,|,^,!
int a = 10;
int b = 20;
int c = 30;
//逻辑与 遇false则false
/*System.out.println(a < b & b < c); //true & true = true
System.out.println(a < b & b > c); //true & false = false
System.out.println(a > b & b < c); //false & true = false
System.out.println(a > b & b > c); //false & false = false*/
//逻辑或 遇true则true
/*System.out.println(a < b | b < c); //true | true = true
System.out.println(a < b | b > c); //true | false = true
System.out.println(a > b | b < c); //false | true = true
System.out.println(a > b | b > c); //false | flase = false*/
//逻辑异或 ^ 两边相同为false,两边不同为true
/*System.out.println(a < b ^ b < c); //true ^true = false
System.out.println(a < b ^ b > c); //true ^false = true
System.out.println(a > b ^ b < c); //false ^ true = true
System.out.println(a > b ^ b > c); //false^flase = false*/
//逻辑非! 表达式结果为true 返回false, 结果为false 返回true
System.out.println(!true);
System.out.println(!!true);
}
}
第二部分:逻辑运算符&&和&的区别与||和|的区别
1.&&和&的区别?
a:最终结果一样。b:&&具有短路效果。左边是false,右边不执行。&是无论左边是false还是true,右边都会执行 。
2.||和|的区别?a:最终结果一样b:||具有短路效果.左边是true,右边不执行|是无论左边是false还是true,右边都会执行
3.开发中常用的逻辑运算符?&&(相比较与&而言,由于短路效果,会减少运算的次数,提高效率),||(相比较于|而言,短路效果提高运算效率),!案例:
class Demo2_Operator {
/*
&&与&的区别
* a:最终结果一样。
* b:&&具有短路效果。左边是false,右边不执行。
||与|的区别
a:最终的结果是一样
b:||具有短路效果,左边为true,右边不执行
*/
public static void main(String[] args) {
int x = 3;
int y = 4;
//System.out.println((++x == 3) & (++y == 4)); //false & false = false
//System.out.println("x = " + x); //x = 4 ++在前先进行x的++运算,然后与3比较返回false
//System.out.println("y = " + y); //y = 5 ++在前先进行y的++运算,然后与4比较返回false
System.out.println("---------------------------");
System.out.println((++x == 3) && (++y == 4)); //false && (未知) = false
System.out.println("x = " + x); //x = 4 ++在前先进行x的++运算,然后与3比较返回false
System.out.println("y = " + y); //y = 4 由于前面的为false,遇到&&短路与则后面的不进行运算
//故而++y的运算不会执行,最终返回的y为初始值.
}
}