2013-03-03 36 views
-5

我採取二叉樹和我遇到的代碼來這樣爲什麼.equals(null)不起作用,== null的作品?

if(head.equals(null)) return; 

它給了我空指針錯誤,而如果我做它的其他方式

if(head == null) return; 

它工作得很好。 請告訴我爲什麼會發生這種情況? 如果有人已經問過,我真的很抱歉。我搜索了但沒有找到與此說明相匹配的任何問題。

+1

如果你可以調用equals方法,那麼你的對象不是null。 – 2013-03-04 08:42:20

+1

請努力嘗試理解底層結構和機制。如果head爲null,則通過調用其任何方法來獲得NullPointerException ... – ppeterka 2013-03-04 09:39:52

回答

24

因爲equals是一種方法,所以它需要一個被調用的對象。如果headnull,那麼沒有對象。

+8

另外值得注意的是,Object.equals的契約明確指出o.equals(null)應爲false:http://docs.oracle。 com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object) – yshavit 2013-03-03 21:23:36

+0

我在對象本身上調用它。 rightNode.equals(null) – 2013-03-04 05:37:00

+2

@ADi Nope。 'rightNode'是*不是一個對象*,它是一個變量。如果該變量恰好指向現有對象,則可以調用該對象的「equals」方法。否則,(如果變量的值爲空,意味着它指向沒有對象),那麼沒有對象調用該方法。別擔心,你會得到它:) – Boann 2013-03-05 22:08:39

相關問題