ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-11-01 14:00:14  阅读:938  来源: 互联网

标签:判断 && always when idea 为空 null 不为


我一直都是用的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不为空的逻辑去写的 。

标签:判断,&&,always,when,idea,为空,null,不为
来源: https://blog.csdn.net/ql_7256/article/details/121075489

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有