任何类均为Object类的间接子类,所以均继承方法public int hashCode()该方法返回的值一般是通过将该对象的内部地址转换成一个整数来实现的。这样能保证每个对象的哈希码值不一样。哈希码产生的依据:哈希码并不是完全唯一的,它是一种算法,让同一个类的对象按照自己不同的特征尽量的有不同的哈希码,但不表示不同的对象哈希码完全不同。
hash码的主要用途:在对对象进行散列的时候作为key输入,据此很容易推断出,我们需要每个对象的hash码尽可能不同,这样才能保证散列的存取性能。事实上,Object类提供的默认实现确实保证每个对象的hash码不同(在对象的内存地址基础上经过特定算法返回一个hash码)。
由于对equals()重写的需要,导致有些时候调用该类的对象的时候,得不到该对象的哈希码值。所以重写equals()后,一定也要重写hashCode().
取得一个类对象的哈希值的形式
int hashCode = System.IdentityHashCode(Object obj);