逻辑运算符&&和||的短路运算

逻辑运算符&&和||的短路运算

先看一段代码:

public class Main {
    public static void main(String[] args) {

        //短路运算
        int a = 4;
        boolean b = (a<3)&&(a++<10);
        System.out.println(b);
        System.out.println(a);

        b = (a>1)||(a++<10);
        System.out.println(b);
        System.out.println(a);
    }
}

很简单的一段代码,初学者的第一反应一般都是,第一遍b、a的输出值是false和5,第二遍是true和6,下面我们来看看程序运行结果:
在这里插入图片描述
和我们预期似乎不一样,两次a++,a的值居然都没有改变,这是为什么呢?这个现象叫做&&和||的短路运算,试想一下,我们手动计算 a&&b 这样的式子时,先算a,再算b,当已经得出a的值为false时,我们还需要算b吗?自然是不需要的,因为&&式两边任一为false时,&&式值一定为false。同理当我们已经得出 a||b 式左式为true,我们自然也不用再去计算右式,因为此时||式已经必然为true了,聪明的Java语言设计者自然也想到了这个问题,因此在制定逻辑运算符&&,||的运算规则时,便规定了只要a&&b式中,只要a式为false,则b式将不会被执行,a&&b的结果为false;而对于a||b,只要a式为true,b式将不会被执行,a||b的结果为true。

一言以蔽之,Java语言在进行逻辑运算时,只要能提前确定结果,就不会再执行后面的代码了,而是直接将结果返回,这样规定,能避免计算机做无用功,提高了程序执行效率。

Java、C、Python、应该所有的程序设计语言都有短路运算吧,毕竟只是语言设计者的举手之劳,就能让逼格更高,能给出肯定回答或者举出反例的可以在评论区留言。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值