【问题标题】:Why .equals(null) doesn't work and == null works? [closed]为什么 .equals(null) 不起作用而 == null 起作用? [关闭]
【发布时间】:2013-02-17 21:53:43
【问题描述】:

我正在实现二叉树,我遇到了这样的代码

if(head.equals(null)) return;

它给了我空指针错误,而如果我用另一种方式这样做

if(head == null) return;

它工作得很好。 请告诉我为什么会这样? 如果有人已经问过了,我真的很抱歉。我搜索但未找到任何符合此描述的问题。

【问题讨论】:

  • 如果你可以调用equals方法,那么你的对象不为null。
  • 请努力理解底层结构和机制。如果 head 为 null,您会通过调用其任何方法得到 NullPointerException...

标签: java null nullpointerexception return equals


【解决方案1】:

因为equals 是一个方法,所以它需要调用一个对象。如果headnull,则没有对象。

【讨论】:

  • 另外值得注意的是 Object.equals 的合同明确规定 o.equals(null) 应该为假:docs.oracle.com/javase/7/docs/api/java/lang/…
  • 我在对象本身上调用它。 rightNode.equals(null)
  • @ADi 不。 rightNode 不是一个对象,它是一个变量。如果该变量当前恰好指向一个存在的对象,那么您可以调用该对象的equals 方法。否则,(如果变量的值为空,意味着它没有指向任何对象)那么就没有对象可以调用该方法。别担心,你会得到它:)
  • @Boann 好的,知道了。 :) 谢谢你的时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
相关资源
最近更新 更多