if(num ==0 || num ==null) num == null can not reach always false

2022-11-03 22:17:59 +08:00
 unregister

Integer num = 0;

Integer num = xxxDao.select(); // 无结果 返回 null

if(num == 0 || num == null){ num = num2; //num2 就是一个其他非空的值 } // 此时调用方法 function(num) throw NullPointerExcepiton 我改成 if(Objects.isNull(num) || num == 0) 才不会报空 idea 提示 num == null can not reach always false. 这是啥原因?有没有大佬知道

1246 次点击
所在节点    Java
6 条回复
Inn0Vat10n
2022-11-03 22:23:31 +08:00
因为如果 num 是 null 的话,num == 0 直接抛异常了
unregister
2022-11-03 22:26:41 +08:00
@Inn0Vat10n 明白了。
cslive
2022-11-04 08:52:58 +08:00
if(num==null || num==0)
调换一下顺序
你后面改其实也就是调换一下顺序
guyeu
2022-11-04 10:40:11 +08:00
if (num == Integer.valueOf(0) || num == null)
guyeu
2022-11-04 10:42:34 +08:00
真这么写代码会被 reviewer 喷
unregister
2022-11-04 21:05:56 +08:00
@cslive 嗯是的,就是包装类不能和整型直接比较。
@guyeu 还好没被发现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/892491

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX