本帖最后由 韦念欣 于 2012-6-25 08:41 编辑
在new对象时,是不会调用hashCode方法的,只有我们使用到HashMap,HashSet集合来存储对象的时候,才会被调用。
因为这两个类使用到哈希表(即所谓的hash table),需要根据对象的哈希值得到它们所存储的位置。这个时候程序就需要通过调用hashCode方法得到对象的hash code(哈希值)。
当使用HashSet或HashMap时,hashCode方法就会被调用,判断已经存储在集合中对象的 hashCode值是否与要加入到集合中的hashCode值是否相同,如果不相同,则把元素加入进去,如果一致,再进行equals方法的比较,分成两种情况: a,如果equals方法返回true,表示对象已经在集合之中,不会加入 b,如果equals方法返回false,表示对象不在集合之中,就会加入 所以,我们要是重写了hashCode方法也要重写equals方法,反之亦然 |