==中的== vs equals()在Java中有什么区别?

问题:

我想澄清一下我是否正确理解:

  •  == – >是一个参考比较,即两个对象指向相同的存储位置
  •  .equals() – >评估对象中值的比较

我的理解正确吗?

回答:

一般来说,你的问题的答案是“是”,但…

  • 等于只比较它写的比较,没有更多,不少于。
  • 如果一个类不覆盖equals方法,那么它默认为最接近父类的equals(Object o)方法,该方法已经覆盖了该方法。
  • 如果没有父类提供了一个覆盖,那么它默认为最终父类Object的方法,所以你留下了Object#equals(Object o)方法。根据Object API,这与==相同;也就是说,它返回true if and only if两个变量指的是同一个对象,如果它们的引用是一样的。因此,您将测试对象平等而不是功能平等
  • 如果覆盖equals以避免“违约”,请务必重写hashCode。根据API,对于两个对象必须,从hashCode()方法返回的结果是相同的,如果他们的equals方法显示它们是等效的。相反的是not必然是真的。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What is the difference between == vs equals() in Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

92 − = 91