例如,如果我創建一個A類型的對象,的java的hashCode()函數和對象
A a = new A();
則是指向在堆上一個A型對象堆棧的引用。 我的問題是,如果我調用a.hashCode(),將返回哪個哈希碼,參考的哈希碼或對象的哈希碼? 如果它是對象的哈希碼,我怎樣才能得到參考的哈希碼? 任何人都可以給我一些提示plz?
例如,如果我創建一個A類型的對象,的java的hashCode()函數和對象
A a = new A();
則是指向在堆上一個A型對象堆棧的引用。 我的問題是,如果我調用a.hashCode(),將返回哪個哈希碼,參考的哈希碼或對象的哈希碼? 如果它是對象的哈希碼,我怎樣才能得到參考的哈希碼? 任何人都可以給我一些提示plz?
hashCode()
只是一個非靜態方法,就像任何其他非靜態方法一樣。它由A
定義,或由基類A
(Object
,在最壞的情況下)定義。所發生的只是該方法在有問題的實例上被調用。
我怎樣才能得到引用的哈希碼?
你不能,因爲這沒有意義。
你可以通過調用獲得參考的哈希碼:
System.identityHashCode(a);
這是數據結構,例如java.util.IdentityHashMap中是基於什麼。
謝謝奧利,說得通 – Bpache 2013-04-09 09:37:08