Java學習:identityHashCode和hashCode方法

System類提供了一個identityHashCode(Object x)方法,這個方法返回的是指定對象的精確hashCode值,也就是根據該對象的地址計算獲得的hashCode值。ide

當某個類的hashCode()方法被重寫以後,該類實例的hashCode方法就不能惟一地標識該對象,可是若是兩個對象的identityHashCode值相同,則這兩個對象是一個對象。spa

經過如下代碼加深理解:code

 1 public class IdentityHashCodeTest{
 2     public static void main(String[] args){
 3         String s1=new String("Hello");
 4         String s2=new String("Hello");
 5         System.out.println(s1.hashCode()+"----"+s2.hashCode());
 6         System.out.println(System.identityHashCode(s1)+"----"+System.identityHashCode(s2));
 7 
 8         String s3="Java";
 9         String s4="Java";
10         System.out.println(System.identityHashCode(s3)+"----"+System.identityHashCode(s4));
11     }
12 }

輸出結果以下:對象

 

 結論;blog

1.s1和s2雖然是不一樣的兩個對象,它們的identityHashCode值不一樣,可是因爲String重寫了hashCode方法,改成根據字符序列計算,因此第一個輸出是同樣而第二個是不同的。hash

2.s3和s4是相同的對象,在常量池裏,因此第三個輸出是同樣的。it

相關文章
相關標籤/搜索