短路求值(短路操作符和非短路操作符)

本文详细解释了短路操作符(&&、||)与非短路操作符(&、|)的区别及应用场景,并通过示例展示了如何避免空指针异常等问题。

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

短路求值(短路操作符和非短路操作符

一、总结

1、短路操作符和非短路操作符

 

二、短路求值

1、&&、|| 为短路操作符。

       eg :  

            expr1 && expr2    //若expr1计算后若为false,则不再计算expr2的值,因为该式肯定为false。否则,计算expr2的值。

            expr1 || expr2      //若expr1计算后若为true,则不再计算expr2的值,因为该式肯定为true。否则,计算expr2的值  。

2、& 和 | 是为非短路操作符。

          eg: 

              expr1 & expr2 //计算expr1后,再计算expr2(无论expr1为true/false) ,将这二个结果作“与”运算为整个表达式的值。

             expr1 | expr2 //计算expr1后,再计算expr2(无论expr1为true/false) ,将这二个结果作“或”运算为整个表达式的值。

3、小例
             String str = null;
     boolean bflag  = false;
 
             bflag = ((str == null) | str.length() > 10); //抛出java.lang.NullPointerException(空指针异常)
 
             bflag = ((str != null) str.length() > 10); //抛出java.lang.NullPointerException(空指针异常)
 
            bflag = ((str == null) || str.length() > 10);//bflag = true(无任何异常,由于短路求值)
 
            bflag = ((str != null) && str.length() > 10);//bflag = false(无任何异常,由于短路求值)

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/9074435.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值