15 JavaObject类( 二 )

super.equals(other)调用hashCode散列码(hash code)是由对象导出的一个整型值 。散列码是没有规律的 。如果x和y是两个不同的对象 , x.hashCode()y.hashCode()基本上不会相同 。
如果重新定义了equals方法 , 就必须为用户可能插入散列表的对象重新定义hashCode方法hashCode方法应该返回一个整数(也可以是负数) , 并且equals与hashCode的定义必须相容:如果x.equals(y)发那会true , 那么x.hashCode()就必须与y.hashCode()返回相同的值 。例如 , 如果定义Employee.equals比较员工的ID , 那么hashCode方法就需要散列ID , 而不是员工的姓名或存储地址 。
toString在Object中有一个重要的方法 , 就是toString方法 , 它会返回表示对象值的一个字符串 。默认打印的是类名+哈希编码的形式 , 由于这种形式正常人看不懂 , 所以我们需要重写这个方法 , 打印一些容易看都懂的描述信息 。一般调用方法有2种:

  • 当一个引用对象和字符串作连接的时候 , 会自动调用toString方法
  • 直接打印引用对象
如果类中没有toString方法 , 又由于Object类是所有类的超类 , 所以我们会调用Object中的toString方法 , 但是默认的打印格式是:类名+哈希编码 , 所以我们需要重写toString方法 , 最后这里强烈建议为自定义的每一个类添加toString方法
【15 JavaObject类】

经验总结扩展阅读