逻辑运算符概述
在数学中,一个数据x,大于3,小于6,我们可以这样来进行表示:3<x<6
在Java中,需要把上面的式子先进行拆解,在进行合并表达。
拆解为:x>3和x<6
合并后:x>3&&x<6
&&其实就是一个逻辑运算符。
我们可与这样说,逻辑运算符,是用来连接关系表达式的运算符。
当然,逻辑运算符也可以直接连接布尔类型的常量或者变量。
逻辑运算符
运算符测试:
1 /* 2 逻辑运算符 3 */ 4 public class HelloWorld{ 5 public static void main(String[] args){ 6 //定义变量 7 int i = 10; 8 int j = 20; 9 int k = 30; 10 11 //”&“(逻辑与) 有false则false,无false则true 12 System.out.println((i > j) & (i > k)); //false & false 13 System.out.println((i < j) & (i > k)); //true & false 14 System.out.println((i > j) & (i < k)); //false & true 15 System.out.println((i < j) & (i < k)); //true & true 16 System.out.println("-------"); 17 18 //“|”(逻辑或) 有true则true,无true则false 19 System.out.println((i > j) | (i > k)); //false | false 20 System.out.println((i < j) | (i > k)); //true | false 21 System.out.println((i > j) | (i < k)); //false | true 22 System.out.println((i < j) | (i < k)); //true | true 23 System.out.println("-------"); 24 25 //“^”(逻辑异或) 相同为false,不相同为true 26 System.out.println((i > j) ^ (i > k)); //false ^ false 27 System.out.println((i < j) ^ (i > k)); //true ^ false 28 System.out.println((i > j) ^ (i < k)); //false ^ true 29 System.out.println((i < j) ^ (i < k)); //true ^ true 30 System.out.println("-------"); 31 32 //“!” (逻辑非) 奇数是true 偶数是false 33 System.out.println((i > j)); //false 34 System.out.println(!(i > j)); //!false 35 System.out.println(!!(i > j)); //!!false 36 System.out.println(!!!(i > j)); //!!!false 37 System.out.println("-------"); 38 } 39 }
短路逻辑运算符
注意事项:
逻辑&,无论左边真假,右边都要执行
短路与&&,如果左边为真,右边执行,如果左边为假,右边不执行。
逻辑或|,无论左边真假,右边都要执行。
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行
最常用的逻辑运算符:&&,||,!
实操:
1 /* 2 逻辑运算符 3 */ 4 public class HelloWorld{ 5 public static void main(String[] args){ 6 //定义变量 7 int i = 10; 8 int j = 20; 9 int k = 30; 10 11 //”&&“(短路逻辑与) 有false则false,无false则true 12 System.out.println((i > j) && (i > k)); //false && false 13 System.out.println((i < j) && (i > k)); //true && false 14 System.out.println((i > j) && (i < k)); //false && true 15 System.out.println((i < j) && (i < k)); //true && true 16 System.out.println("-------"); 17 18 //“||”(短路逻辑或) 有true则true,无true则false 19 System.out.println((i > j) || (i > k)); //false || false 20 System.out.println((i < j) || (i > k)); //true || false 21 System.out.println((i > j) || (i < k)); //false || true 22 System.out.println((i < j) || (i < k)); //true || true 23 System.out.println("-------"); 24 25 //&&和& 26 //System.out.println((i++ > 100) & (j++ > 100)); //false & false 27 System.out.println((i++ > 100) && (j++ > 100)); //false && false 28 System.out.println("i:" + i); 29 System.out.println("j:" + j); 30 } 31 }