@Test
    public void HashCode(){


   String $1="hello";
   String $2="world";
   String $3="nice to meet you!";
   int [] cd;
   cd=new int[12];
   
   System.out.println(cd.hashCode());
   System.out.println($1.hashCode());
   System.out.println($2.hashCode());
   System.out.println($3.hashCode());
   
   
    }


---------------

4097744
99162322
113318802
857771161

 
  

从对应的输出可以看出相同字符串的hashcode相同。 hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值 。




    简介:

hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值 详细了解请 参考 [1]
  ·
 方法: 
public int hashCode()返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。

 

协定:

一致性

在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。


equals
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果,注:这里说的equals(Object) 方法是指Object类中未被子类重写过的equals方法。
如果两个hashCode()返回的结果相等,则两个对象的equals方法不一定相等。
附加
如果根据equals(java.lang.Object)方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。

 

重写

HashMap对象是根据其Key的hashCode来获取对应的Value。
在重写父类的equals方法时,也重写hashcode方法,使相等的两个对象获取的HashCode也相等,这样当此对象做Map类中的Key时,两个equals为true的对象其获取的value都是同一个,比较符合实际。
 

本文转载:CSDN博客