Java中的短路

粗略的讲解"|","||","&","&&"

先来看一道题,以下代码输出为多少,哪些会短路?

 @Test
    public void test01() {
        if (true & (3 / 0 == 0)) {
            System.out.println("&");
        }
    }

    @Test
    public void test02() {
        if (true && (3 / 0 == 0)) {
            System.out.println("&&");
        }
    }

    @Test
    public void test03() {
        if (true | (3 / 0 == 0)) {
            System.out.println("|");
        }
    }

    @Test
    public void test04() {
        if (true || (3 / 0 == 0)) {
            System.out.println("||");
        }
    }

答案:只有test04能正常执行

解析:当我们使用一个"|“或”&“的时候,无论前面是正确与否,后面的判断条件都会执行,不会造成短路。
可能造成短路的是”||“和”&&"这两个。我们看一下以下代码

    @Test
    public void test05(){
        if (true||(3/0==2)){
            System.out.println("aa");
        }

    }

上面这段代码,不难看出if语句的后半段是除0异常,因为中间的判断为"||"(或),所以如果想要不报错,前面要为true,也就是当判断语句为或的时候,前面正确就不会执行后面语句,直接运行if语句中的代码,当然如果前面为false,就会判断后面的内容

    @Test
    public void test06(){
        if (false&&(3/0==2)){
            System.out.println("aa");
        }else {
        System.out.println("bb");
        }
    }

上面的代码,后半句也是除0异常,因为中间的是"&&"(并且),所以如果想跳过后面的异常前半句应该为false,并且(一假为假),当前面为false的时候,就不会判断后面的语句,直接跳到else中的代码,当前面判断为true的时候,就会判断后面的内容,造成除0异常。

除了if判断还有while中的判断,以上理论均适用

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今晚不想睡沙发

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

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

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

打赏作者

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

抵扣说明:

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

余额充值