@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(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都是同一个,比较符合实际。