原文:(面試題)兩個對象值相同 (x.equals(y) == true) ,但卻可有不同的 hash code ,這 句話對不對

答:不對,有相同的 hash code這是java語言的定義: 對象相等則hashCode一定相等 hashCode相等對象未必相等 .如果是基本變量,沒有hashcode和equals方法,基本變量的比較方式就只有 .如果是變量,由於在java中所有變量定義都是一個指向實際存儲的一個句柄 你可以理解為c 中的指針 ,在這里 是比較句柄的地址 你可以理解為指針的存儲地址 ,而不是句柄指向的實際內存 ...

2013-08-08 16:16 6 20872 推薦指數:

查看詳情

兩個對象相同(x.equals(y) == true),但卻可以有不同的hashcode?

  這個得看情況,如果該對象重寫了equals方法,那么可能會出現equals相同,但hashcode不同的情況,但假如沒有重寫equals方法,那么它默認繼承是Object的equals方法,根據源碼可知,此時equals相同,hashcode一定相同。 拋開 ...

Thu May 09 03:24:00 CST 2019 0 2040
問題:兩個對象相同(x.equals(y) == true),但是可能存在hashCode不同嗎?

面試官的考察點 這道題仍然是考察JVM層面的基本知識,面試官認為,基本功扎實,才能寫出健壯性和穩定性很高的代碼。 涉及到的技術知識 (x.equals(y)==true),這段代碼,看起來非常簡單,但其實里面還是涉及了一些底層知識點的,首先我們基於equals這個方法進行探索 ...

Thu Oct 28 18:18:00 CST 2021 0 402
兩個對象equals方法比較為true,它們的Hashcode相同嗎?

兩個對象equals方法比較為true,它們的Hashcode相同嗎? 答:不一定相同。正常情況下,因為equals()方法比較的就是對象在內存中的,如果相同,那么Hashcode也應該相同。但是如果不重寫hashcode方法,就會出現不相等的情況。 下面的話 ...

Sun Jun 11 18:18:00 CST 2017 0 9375
hashCode之一--兩個對象相同,有相同hash code

兩個對象相同(x.equals(y) == true),則一定有相同hash code。 這是java語言的定義: 因為:Hash,一般翻譯做“散列”,也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出 ...

Thu Aug 06 23:44:00 CST 2015 0 5530
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM