2010-06-09 280 views
8

嗨我想知道上述比较之间的差异吗?null ==对象和对象== null之间的区别

我收到空指针异常,当我检查object.getItems() == null。 但如果我将其更改为null == object.getItems(),它工作正常。

我看过这个what is the difference between null != object and object!=null 但我没有得到满意的答案。

+11

不,如果一个NPE被抛出,那个改变不会改变。重新检查你的假设,因为这两个表达式是等价的。 – 2010-06-09 08:22:25

+0

我得到NPE两种方式。当你尝试它时,究竟什么是空的,对象? – 2010-06-09 08:25:21

+0

请发布完整的Java语句,也许问题只是一个错位或丢失的括号。 – 2010-06-09 08:27:29

回答

13

(类似的问题:Which is more effective: if (null == variable) or if (variable == null)?

空的区别==对象和对象== NULL

没有语义差别。

object.getItems() == nullnull == object.getItems()是等同的。

也许你会与事实混合起来是

nonNullObj.equals(obj) 

obj.equals(nonNullObj) 

可以有所作为(因为第二个选择可能会导致情况下,NPE被叫方空)。

+0

第二种表示NPE – Pedantic 2010-06-09 09:32:14

+0

@Rozer的原因是什么,如果obj为null,那么.equals方法调用将导致NPE。 – aioobe 2010-06-09 11:14:00

相关问题