標籤:equals equal 之間 obj object類 介紹 相同 span class
==
首先,得說明java資料類型分為基礎資料型別 (Elementary Data Type)和引用資料類型,
基礎資料型別 (Elementary Data Type)有8種:
浮點型:float(4 byte), double(8 byte)
整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte)
字元型: char(2 byte)
布爾型: boolean
當使用基礎資料型別 (Elementary Data Type)進行比較,比較的是實際的值,使用引用資料類型進行比較,比較的是儲存於記憶體中的地址。
-----------------------------------------------------------------------------------
equals
首先,equals是類中定義的方法,不同類的equals方法不一樣
eg:
Object類
public boolean equals (Object obj){ return (this== obj); }
可見對於Object,equals與==一致
而對於其他類,對equals方法進行了重寫,多用來判斷兩者的值是否相等。
例如String類對equals方法進行了重寫,用來比較指向的字串對象所儲存的字串是否相等。
-----------------------------------------------------------------------------------
hashCode
這裡先簡單介紹一下hash表,注意以下三個詞: key關鍵字,映射關係f(key)又叫hash函數,hash值
散列技術就是在記錄的儲存位置和它的關鍵字之間建立一個確定的應關係,關鍵字key通過映射關係f(key)得出hash值,即儲存位置,儲存位置是一塊連續的儲存空間中,稱為雜湊表。
hashCode方法就是根據一定的規則將與對象相關的資訊(比如對象的儲存地址,對象的欄位等)映射成一個數值。
若兩個對象hashCode相同,不代表他們真的相等,得用equals再確認一次
若兩個對象hashCode不同,代表他們真的不相等
==、equals與hashCode