最直接的应用是判断两个对象是否相等
你应该用过类似这样的语句吧:
String test = "greeting";
if("greeting".equals(test)){
...
}
实际上equals方法比较的是两个字符串对象的hashCode是否相等
此方法在Object类中声明,你可以在自定义的类中覆盖它。Java规范中建议构造的hash函数应该使构造对象时生成的hashCode均匀分布,一般情况下可以将对象中的每个属性值乘以一个质数然后求其和来获得hashCode,对于引用类型的属性直接调用此引用类型的hashCode方法再与其他值求和。
hashCode函数应该使equals满足自反性、对称性、传递性,一般在它们两个方法需要同时覆盖