2013-03-03 39 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

相关问题