z*********e 发帖数: 10149 | 1 我有个HashMap hm
如果某个ListNode ln没有被push进这个hashmap,那么hm.get(ln)返回null,这个正常
null != true 得到的结果也是true,没问题
可是hm.get(ln) != true得到是个NullPointerException,而 hm.get(ln) == null返
回结果是true,是正常的
这是为什么? |
z****e 发帖数: 54598 | 2 null!=true的真值是true?
你确定?
自己试一下 |
z*********e 发帖数: 10149 | 3 i tried in watcher last night. let me do this again.
however i was totally lost why would it be nullpointerexception
【在 z****e 的大作中提到】 : null!=true的真值是true? : 你确定? : 自己试一下
|
s******e 发帖数: 493 | 4 I do not think that compiler will let you go for null!=true.
The reason for null pointer exception is autoboxing of null if you have an
expression to be evaluated to null at runtime. |
z*********e 发帖数: 10149 | 5 谢谢两位大牛,我又试了一下,直接写null == true compiler会报错不让通过,而在
debug的时候用watches里面写null == true又会得到结果(false)
谢谢smectite的解释,autoboxing看来用的时候还是要小心, |
l*******g 发帖数: 82 | 6 你之所以那个get() != true出现null pointer exception是因为jvm试图先吧返回值转
化成Boolean,所以你就看见了这个exception。
我有个HashMap hm如果某个ListNode ln没有被
push进这个hashmap,那么hm.get........
【在 z*********e 的大作中提到】 : 我有个HashMap hm : 如果某个ListNode ln没有被push进这个hashmap,那么hm.get(ln)返回null,这个正常 : null != true 得到的结果也是true,没问题 : 可是hm.get(ln) != true得到是个NullPointerException,而 hm.get(ln) == null返 : 回结果是true,是正常的 : 这是为什么?
|