根据文档,hashCode的默认实现将返回一些对于每个对象不同的整数尽可能合理,Object类定义的hashCode方法确实为不同的对象返回不同的整数。(这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要此实现技术。)但是,有时您希望哈希码对于具有相同含义的不同对象是相同的。例如Student s1 = new Student("John", 18);Student s2 = new Student("John", 18);s1.hashCode() != s2.hashCode(); // With the default implementation of hashCode如果在集合框架中使用散列数据结构(如HashTable,HashSet),则会出现此类问题。特别是对于像HashSet这样的集合,你最终会有重复元素并违反Set契约。