Blog
It's a Wonderful Life
java中equals和==的区别
-
==检测两个对象是否指向同一块内存区域,而equals只比较定义让它比较的内容。 -
如果一个类没有重写
equals方法,则默认使用与这个类最近的一个重写了equals方法的父类。 -
如果找不到这个父类,那么就会使用顶级父类
Object的equals方法,在这种情况下,equals和==是等价的,即:当且仅当两个对象指向同一块内存区域的时候返回true,这时,equals比较的是对象的一致而不是功能的一致。 -
如果重写了一个类的
equals方法,应当也重写它的hashCode方法。而且,如果两个对象的equals比较结果为真,那么它们的hashCode方法必须返回同样的值。反之则不必。