两个变量组合判空,idea智能提示Condition ‘b == null‘ is always ‘true‘ when reached

我一直都是用的idea,不得不说,真的是很智能、很顺手。所以在代码中碰到提示,我都会看一下,然后思考一下,为什么这么提示,是否有优化的地方。最令我满意的是这个发现是:idea这么牛,居然能判断当前环境线程是否安全????。今天在码代码时,又发现了一个idea的提示,让我思考了好一会儿

代码也很简单,如下:
代码
有两个变量,我要组合判断他们为非空的情况,我按照我的想法写:1. a为空,b不为空;2. a不为空,b为空 ……当我写完之后发现,在第三种情况的判断下,idea给出了一个黄色的提示:
黄色提示
Condition ‘b == null’ is always ‘true’ when reached,我当时翻译的比较糙,意思就是 b永远为null,这是咋回事呢?为啥b永远为null。我知道if……else if……else……具有互斥性,我就开始分析:

  • 如果不走第一个判断,那么可以得到两点结论:
  1. a不为null时,b一定不为null
  2. a为null时,b可以为null也可以不为null。

第2点是废话,但是第1点是有效的结论。

  • 如果不走第二个判断,那么也可以得到两个结论:
  1. a为null时,b一定为null,
  2. a不为null时,b可以为null也可以不为null。

第4点是废话,但是第3点是有效的结论。

所以,如果前两个判断都不走,走到第三个判断,那么可以得到两点有效结论:

  • a不为null时,b一定不为null
  • a为null时,b一定为null,

所以,当我在写else if (a == null && b == null),写到a==null时,idea就非常智能的提示:Condition ‘b == null’ is always ‘true’ when reached,因为此时b一定为null,&& b == null 是多余的。

其实仔细想想也是,如果除开了上面最先的两种情况,if (a != null && b == null)和(a == null && b != null),那么剩下的只有 a==null && b==null 和a !=null && b != null。当a==null时,b就不用判断了,一定是null。只是按照常人的思维,一定一按照:当 a为空,b不为空;当a不为空,b为空 ;当a为空,b为空;当a不为空,b不为空的逻辑去写的 。

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值