运算符—逻辑运算符

目录

5.逻辑运算符

5.1逻辑运算符概述

 5.2短路逻辑运算符


5.逻辑运算符

(学完之后要求能够使用逻辑运算符完成逻辑运算)

5.1逻辑运算符概述

在数学中,一个数据x,大于3,小于6,我们可以写为这样来表示:3<x<6

在Java中,需要把上面的狮子先进行拆解,在进行合并表达。

拆解为:x>3.x<6

合并为:x>3 && x<6

我们可以这样说,逻辑运算符,是用来连接关系表达式的运算符。

当然逻辑运算符也可以直接连接布尔类型的常量或者变量。

逻辑运算符分类:

 5.2短路逻辑运算符

 注意事项:

逻辑与&:无论左边真假,右边都要执行。

短路与&&:如果左边为真,右边执行;如果左边为假,右边不执行。

逻辑或|:无论左边真假,右边都要执行。

短路或||:如果左边为真,右边执行;如果左边为假,右边不执行。

最常用的逻辑运算符:&&||

代码演示:

/*
    逻辑运算符
 */
public class OperatorDemo7 {
    public static void main(String[] args) {
        //定义变量
        int i = 10;
        int j = 20;
        int k = 30;

        //&逻辑与 有false则false演示
        System.out.println( (i > j) & (i > k) );//false & false得false
        System.out.println( (i > j) & (i < k) );//false & true得false
        System.out.println( (i < j) & (i < k) );//true & true得true
        System.out.println( (i < j) & (i > k) );//true & false得false
        System.out.println( (i == j) & (i == k) );//false & false得false
        System.out.println( (i != j) & (i != k) );//true & true得true
        System.out.println( (i >= j) & (i >= k) );//false & false得false
        System.out.println( (i <= j) & (i <= k) );//true & true得true
        System.out.println("--------------------");

        //|逻辑或 有true则true演示
        System.out.println( (i > j) | (i > k) );//false | false得false
        System.out.println( (i > j) | (i < k) );//false | true得true
        System.out.println( (i < j) | (i < k) );//true | true得true
        System.out.println( (i < j) | (i > k) );//true | false得true
        System.out.println( (i == j) | (i == k) );//false | false得false
        System.out.println( (i != j) | (i != k) );//true | true得true
        System.out.println( (i >= j) | (i >= k) );//false | false得false
        System.out.println( (i <= j) | (i <= k) );//true | true得true
        System.out.println("--------------------");

        //^逻辑异或 相同则为false,不同为ture
        System.out.println( (i > j) ^ (i > k) );//false ^ false得false
        System.out.println( (i > j) ^ (i < k) );//false ^ true得true
        System.out.println( (i < j) ^ (i < k) );//true ^ true得false
        System.out.println( (i < j) ^ (i > k) );//true ^ false得true
        System.out.println( (i == j) ^ (i == k) );//false ^ false得false
        System.out.println( (i != j) ^ (i != k) );//true ^ true得false
        System.out.println( (i >= j) ^ (i >= k) );//false ^ false得false
        System.out.println( (i <= j) ^ (i <= k) );//true ^ true得false
        System.out.println("--------------------");

        //!逻辑非 !false为true,!!false为false,!!!false为true,以此类推
        System.out.println( !(i > j) );//得true
        System.out.println( !!(i > j) );//得false
        System.out.println( !!!(i > j) );//得true
        System.out.println( !!!!(i == j) );//得false
        System.out.println("--------------------");

        //&&短路与 结论与&逻辑与相同 有false则false,否则为true
        System.out.println( (i > j) && (i > k) );//false & false得false
        System.out.println( (i > j) && (i < k) );//false & true得false
        System.out.println( (i < j) && (i < k) );//true & true得true
        System.out.println( (i < j) && (i > k) );//true & false得false
        System.out.println( (i == j) && (i == k) );//false & false得false
        System.out.println( (i != j) && (i != k) );//true & true得true
        System.out.println( (i >= j) && (i >= k) );//false & false得false
        System.out.println( (i <= j) && (i <= k) );//true & true得true
        System.out.println("--------------------");

        //||短路或 结论与|逻辑或相同,有true则true,否则为false
        System.out.println( (i > j) || (i > k) );//false || false得false
        System.out.println( (i > j) || (i < k) );//false || true得true
        System.out.println( (i < j) || (i < k) );//true || true得true
        System.out.println( (i < j) || (i > k) );//true || false得true
        System.out.println( (i == j) || (i == k) );//false || false得false
        System.out.println( (i != j) || (i != k) );//true || true得true
        System.out.println( (i >= j) || (i >= k) );//false || false得false
        System.out.println( (i <= j) || (i <= k) );//true | |true得true
        System.out.println("--------------------");

        //逻辑与&和短路与&&的区别演示
        //System.out.println( (i++ > 100) & (j++ > 100) );//false & false得false
        System.out.println( (i++ > 100) && (j++ > 100) );//false && false得false 无区别

        /*
        但是把上面逻辑与的注释掉就得到i == 11;j == 20
        为什么呢?因为上面输出语句先运算i++再判断是否大于100,
        根据逻辑与的运算,第一条判断出来是false后再继续运算j++在判断是否大于100,
        在得到第二条false,则判定为false
        但是短路与是先判断第一条i++是否大于100,如果false,
        那就直接根据短路与的结论直接不用验证后面的关系表达式直接判断为false
        因为逻辑与的结论是有false则全false
        所以短路与只要判断出第一个false就不再对后面的关系表达式进行运算直接判定为false
        就是为什么叫短路与&&,短路或也同理。
         */
        System.out.println("i:" + i);//得11
        System.out.println("j:" + j);//得20
    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贰陆.256

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值