Blog

It's a Wonderful Life

java中equals和==的区别

2017-03-14 22:31 Posted in Learn with Java

  1. ==检测两个对象是否指向同一块内存区域,而equals只比较定义让它比较的内容。

  2. 如果一个类没有重写equals方法,则默认使用与这个类最近的一个重写了equals方法的父类。

  3. 如果找不到这个父类,那么就会使用顶级父类Objectequals方法,在这种情况下,equals==是等价的,即:当且仅当两个对象指向同一块内存区域的时候返回true,这时,equals比较的是对象的一致而不是功能的一致

  4. 如果重写了一个类的equals方法,应当也重写它的hashCode方法。而且,如果两个对象的equals比较结果为真,那么它们的hashCode方法必须返回同样的值。反之则不必。