public boolean equals(Object obj)
{
return (this == obj);
}
可以看出,只有当一个实例等于它本身的时候,equals()才会返回true值。通俗地说,此时比较的是两个引用是否指向内存中的同一个对象,也可以称做是否实例相等。而我们在使用equals()来比较两个指向值对象的引用的时候,往往希望知道它们逻辑上是否相等,而不是它们是否指向同一个对象。在这样的情况下,如果超类也没有重写equals()以实现期望的行为,这时就需要重写equals方法。作者: treecolor166 时间: 2013-12-23 07:32
Object类中的equals方法比较的是两个对象的内存地址,当你不想用Object类给你提供的equals方法时,就需要你自己去重写这个方法,去定义你自己想实现的equals方法作者: zzmxhm 时间: 2013-12-23 10:13
应该根据程序的逻辑决定是否重写,如果相等的要求指同一个内存对象,就不用重写,但如果是语义上的相等,就需要重写。比如 Set 的 equals 方法要求当比较的对象也为 Set 类型、包含相同数目的元素且原集合包含比较集合中的所有元素时返回 true (Returns true if the specified object is also a set, the two sets have the same size, and every member of the specified set is contained in this set),因此如果要自己实现一个 Set 类型的集合,就需要重写 equals 方法。作者: 范晓冲 时间: 2013-12-25 02:20
首先,你要搞明白什么是重写,为什么需要重写,这些问题都明白了,你就知道何时重写了作者: L_t 时间: 2013-12-25 10:02
所有子类都要重写Object的equals方法的 ,不然你输出的对象就是域名+@+哈希地址值了。所以一般在创建类的时候先把复写的都写全了,以后用不用都不会出错的啊作者: Zenith 时间: 2013-12-25 11:11
就记住都重写,有默认重写和自己手动写的