两个原因: 为了提高效率,两个对象的比较首先比较hashCode是否相等,若不相等则对象不相等;若相等则继续调用equals方法比较。这样不必每次比较都要调用equals方法,提高效率。为了保证使用equals方法比较相等的情况下hashCode也相等,不会出现equals相等,而hashCode不相等的情况。