Java 运算符||和&&都具有短路效果

第一次接触公司项目的时候看到一段代码 ,感觉会有问题

if (list == null || list.isEmpty()) {
   list = productBrandMapper.findList(2);
   redisUtils.setex(key, list, 60 * 30);
}

如果 list为null值,那么list.isEmpty()时会报java.lang.NullPointerException空指针异常,

但是运行了几次都是没有问题的,之前只知道&&有短路效果,百度之后发现,||和&&运算符都是具有短路效果

举个例子,

a=1 b=2 所以 a>0 这个值为true b>1 这个值为true b>2 这个值为 false

如 if(a>0&b>1) 我们可以得出 if(true&true),条件成立(true不为0,所以true&true不为0)

如 if(a>0&&b>1) 我们可以得出 if(true&&true),条件成立(&&两边操作数都非零,所以条件成立)

如 if(b>2&a>0) 我们可以得出 if(false&true),条件不成立(false为0,false&true为0,条件不成立)

如 if(b>2&&a>0) 我们可以得出 if(false&&a>0),条件不成立(&&左侧为false,&&运算到此结束,条件不成立)

如果是||和|会有不一样的效果

 还有一点重要的,i=1在C语言中是有返回值的,而在Java中是没有的,在if判断中出现赋值操作是会报错的

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值