5 回答

TA貢獻2039條經(jīng)驗 獲得超8個贊
我記得是不可以的。是什么原因要讓你去打印內(nèi)存地址?
hashcode不一定能代表內(nèi)存地址不相同。不同的JVM有不同的實現(xiàn)。

TA貢獻1827條經(jīng)驗 獲得超8個贊

TA貢獻1804條經(jīng)驗 獲得超7個贊
把JDK的API好好讀一下
hashCode 的常規(guī)協(xié)定是:
在 Java 應(yīng)用程序執(zhí)行期間,在對同一對象多次調(diào)用 hashCode 方法時,必須一致地返回相同的整數(shù),前提是將對象進行 equals 比較時所用的信息沒有被修改。從某一應(yīng)用程序的一次執(zhí)行到同一應(yīng)用程序的另一次執(zhí)行,該整數(shù)無需保持一致。
如果根據(jù) equals(Object) 方法,兩個對象是相等的,那么對這兩個對象中的每個對象調(diào)用 hashCode 方法都必須生成相同的整數(shù)結(jié)果。
如果根據(jù) equals(java.lang.Object) 方法,兩個對象不相等,那么對這兩個對象中的任一對象上調(diào)用 hashCode 方法不 要求一定生成不同的整數(shù)結(jié)果。但是,程序員應(yīng)該意識到,為不相等的對象生成不同整數(shù)結(jié)果可以提高哈希表的性能。
實際上,由 Object 類定義的 hashCode 方法確實會針對不同的對象返回不同的整數(shù)。(這一般是通過將該對象的內(nèi)部地址轉(zhuǎn)換成一個整數(shù)來實現(xiàn)的,但是 JavaTM 編程語言不需要這種實現(xiàn)技巧。)

TA貢獻1895條經(jīng)驗 獲得超7個贊
Object的hashCode()默認是返回內(nèi)存地址的,但是hashCode()可以重寫,所以hashCode()不能代表內(nèi)存地址的不同
System.identityHashCode(Object)方法可以返回對象的內(nèi)存地址,不管該對象的類是否重寫了hashCode()方法
添加回答
舉報