逻辑运算符&& || 和位运算符 & | 的区别

本文详细探讨了Java中的逻辑运算符&&和||的特性及其在布尔运算中的不同行为。通过示例代码展示了它们在短路逻辑和非短路逻辑中的运用,解释了它们如何在表达式中提前终止运算。此外,还对比了与按位运算符&和|的区别,强调了在实际编程中的智能选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 // | 和 || 的区别
 // 首先我们知道 || 的最大特点是 两两比较,
 // 只要其中有一个为false,结果都为false
 // 接下来,我们通过以下 四种情况 开始 进行比较
 false false
 false true
 true false
 true true
 首先定义一个初始变量 int i = 0;

/*if (++i == 0 | i++ == 0) {}//① false false
        System.out.println(i);   */ //2

       /* if (++i == 0 | i++ == 1) {}//② false true
        System.out.println(i);   */ //2

        /*if (i++ == 0 | i++ == 0) {}//③ true false
        System.out.println(i);  */  //2

       /* if (i++ == 0 | i++ == 1) {}//④ true true
        System.out.println(i); */   //2

        System.out.println("---------------");

        /*if (++i == 0 || i++ == 0) {}//① false false
        System.out.println(i);*/        // 2

        /*if (++i == 0 || i++ == 1) {}//② false true
        System.out.println(i);*/       //2

        /*if (i++ == 0 || i++ == 0) {}//③ true false
        System.out.println(i);*/    // 1

        /*if (i++ == 0 || i++ == 1) {}//④ true true
        System.out.println(i);*/    // 1

        System.out.println("--------------");
        System.out.println("--------------");
        // & 和 && 的区别
        // 首先我们知道 && 的最大特点是 两两比较,只有两个均为true,结果才为true

        /*if (++i == 0 & i++ == 0) {}//① false false
        System.out.println(i);   */ //2

        /*if (++i == 0 & i++ == 1) {}//② false true
        System.out.println(i);  */  //2

       /* if (i++ == 0 & i++ == 0) {}//③ true false
        System.out.println(i); */   //2

       /* if (i++ == 0 & i++ == 1) {}//④ true true
        System.out.println(i); */   //2

        System.out.println("---------------");

        if (++i == 0 && i++ == 0) {}//① false false
        System.out.println(i); // 1 i++ == 0根本没有运算

       /* if (++i == 0 && i++ == 1) {}//② false true
        System.out.println(i);*/ // 1

        /*if (i++ == 0 && i++ == 0) {}//③ true false
        System.out.println(i);*/ // 2

        /*if (i++ == 0 && i++ == 1) {}//④ true true
        System.out.println(i);*/  // 2
 /**
  * 总结 && & 以及 || | 进行布尔运算时,实现的结果都是一样的
  * 但是 && 和 || 更智能
  * 当若干个数进行布尔运算的时候,从左到右,
  *    ||: 一旦发现两两运算 || 时为true时,将结束运算,并返回true
  * 而 | 无论结果如何,将会一直运算到末尾
  *    &&: 一旦发现两两运算 && 时为false时,将结束运算,并返回false
  * 而 & 无论结果如何,将会一直运算到末尾
  * 
  */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值