Java核心基础:逻辑运算符

逻辑运算符概述:

  • 逻辑运算符是用来判断并且, 或者, 除非等逻辑关系的符号.
  • 该符号两端一般连接值为布尔类型的关系表达式
  • : 某企业招工, 要求年龄必须在 20 ~ 65岁之间.

分类

注意: 假设下表中的a和b, 都是boolean类型的值.

符号

作用

说明

&

逻辑与

a&b,并且的意思. 有false则整体为false, 都为true, 则整体为true.

|

逻辑或

a|b,或者的意思, 有true则整体为true, 都为false, 则整体为false.

!

逻辑非

!a,取反的意思, 以前为true, 取反后为false, 以前为false, 取反后为true.

^

逻辑异或

a^b,异同的意思, 相同为false, 不同为true.

小技巧:

 对一个布尔数据, 偶数次取反, 该数据值不变.

!true = false

 示例: 逻辑运算符入门

需求

定义三个int类型的变量a, b, c, 它们的初始化值分别为10, 20, 30.

通过上述的三个变量, 演示各个逻辑运算符.

参考代码

public class OperatorDemo02 {
    public static void main(String[] args) {
        int a = 10, b = 20, c = 30;
        //&: 逻辑与, 并且的意思, 有false则整体为false.
        //相当于: 班长找女朋友, 要求长得漂亮, 并且身材好.
        System.out.println((a > b) & (a > c)); //false & false
        System.out.println((a < b) & (a > c)); //true & false
        System.out.println((a > b) & (a < c)); //false & true
        System.out.println((a < b) & (a < c)); //true & true
        System.out.println("-----------------");

        //|: 逻辑或, 或者的意思, 有true则整体为true.
        //相当于: 降低条件了, 要么长得漂亮, 要么身材好.
        System.out.println((a > b) | (a > c)); //false | false
        System.out.println((a < b) | (a > c)); //true | false
        System.out.println((a > b) | (a < c)); //false | true
        System.out.println((a < b) | (a < c)); //true | true
        System.out.println("-----------------");

        //!: 逻辑非, 取反的意思
        //相当于: 只要不是男的就行.
        System.out.println(!(a > b));   //!false
        System.out.println(!(a < b));   //!true
        System.out.println("-----------------");

        //逻辑异或, 异同的意思, 相同为false, 不同为true.
        //相当于: 最后还是找了个男的, 但是领不了证.
        //法律规定: 一夫一妻, 一男一女, 必须是异性才能领证.
        System.out.println((a > b) ^ (a > c)); //false ^ false
        System.out.println((a < b) ^ (a > c)); //true ^ false
        System.out.println((a > b) ^ (a < c)); //false ^ true
        System.out.println((a < b) ^ (a < c)); //true ^ true
    }
}

短路逻辑运算符

在实际开发中, 并且, 或者这样的操作是非常多的, 但是上述的&(逻辑与), !(逻辑或)运算符没有短路效应, 所以效率相对较低, 针对这种情况, 我们可以使用&&(短路与), ||(短路或)来优化.

格式

符号

作用

说明

&&

短路与

作用和&相同,但是有短路效果, 前边出现false, 后边不执行.

||

短路或

作用和|相同,但是有短路效果, 前边出现true, 后边不执行.

解释

  • 短路与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与运算符就有这样的效果,可以提高效率。
  • 同理在短路或运算中,一旦发现值为true,右边的表达式将不再参与运算。

短路和非短路之间的区别

  • 逻辑与 和 短路与之间的区别
    • 逻辑与&(也叫单与): 无论左边真假,右边都要执行。
    • 短路与&&(也叫双与): 如果左边为真,右边执行;如果左边为假,右边不执行。
  • 逻辑或 和 短路或之间的区别
    • 逻辑或|(也叫单或): 无论左边真假,右边都要执行。
    • 短路或||(也叫双或): 如果左边为假,右边执行;如果左边为真,右边不执行。
  • 记忆: 在实际开发中, 我们用的最多的逻辑运算符就是: &&, ||, !

案例

需求

参考代码

public class OperatorDemo03 {
    public static void main(String[] args) {
        //1. 定义两个int类型的变量a和b, 初始化值分别为: 2, 5
        int a = 2, b = 5;
        //2. 演示逻辑与(&)
       /* System.out.println((a++ > 2) & (b++ < 7)); //两个表达式都会执行.
        System.out.println(a);
        System.out.println(b);*/
        System.out.println("------------------");

        //3. 演示短路与(&&)
        System.out.println((a++ > 2) && (b++ < 7)); //左边表达式结果为false, 右边不执行.
        System.out.println(a);
        System.out.println(b);
    }
}

 

 

 

你可能感兴趣的:(Java,大数据经验分享,java,编程语言,大数据)