標籤:不同 dha code 編碼方式 基於 實現 常量 物件類型 基本
001、“a==b”和”a.equals(b)”有什麼區別?a.hashCode() 有什麼用?與a.equals(b) 有什麼關係?
object的預設equals實現: a.equals(b)和a==b有一樣的結果,即預設實現中認為只有a和b指向同一個對象時才返回true。其中,String重寫了equals,認為只要String的字元系列相同就可以返回true。
如果 a 和 b 都是對象,則 a==b 是比較兩個對象的引用,只有當 a 和 b 指向的是堆中的同一個對象才會返回 true,而 a.equals(b) 是進行邏輯比較,所以通常需要重寫該方法來提供邏輯一致性的比較。例如,String 類重寫 equals() 方法,所以可以用於兩個不同對象,但是包含的字母相同的比較。
hashCode() 方法是相應對象整型的 hash 值。它常用於基於 hash 的集合類,如 Hashtable、HashMap、LinkedHashMap等等。根據 Java規範,兩個使用 equal() 方法來 判斷相等的對象,必須具有相同的 hash code。
註:
① hash code是一種編碼方式,在Java中,每個對象都會有一個hashcode,Java可以通過這個hashcode來識別一個對象。
② equlas大多用來做字串比較,要判斷基礎資料型別 (Elementary Data Type)或者物件類型,需要使用==
002、String s=new String(“xyz”);建立了幾個字串對象?
第一次運行:兩個:在String常量池中,如果不存在"xyz"對象,則會建立"xyz"對象和new String("xyz")對象。
Strng a = "xyz";
String s = new String("xyz");
第二次運行: 一個:在String常量池中,如果已經存在"xyz"對象,則不會再建立"xyz"對象,僅建立new String("xyz")對象;
java面試--01