第9条 覆盖equals时总要覆盖hashCode
覆盖了equals方法,也必须覆盖hashCode方法,if not,就违反了hashCode的通用约定,会导致无法跟基于散列的集合正常运作....Object通用约定(在Object类中的注释即是):
在应用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法都必须始终如一地返回同一个整数...如果两个对象根据equals方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode方法都必须产生同样的整数结果....(即equals相等,那么hashCode一定相等,需要注意的是,反过来不一定成立,即hashCode相等不代表equals相等)
如果两个对象根据equals方法比较是不相等的,那么调用这两个对象中任意一个对象的...s)
如果是double,则计算Double.doubleToLongBits(f),再按long类型计算一遍
如果是f是个对象引用,并且该类的equals方法通过递归地调用equals的方式来比较这个域