2010-06-09 265 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

相關問題