equals()和hashcode()都是object類中的方法。
equals方法用於比較兩個物件是否相同;
hashcode方法是根據物件的位址或者字串或者數字計算該物件的雜湊值
object類中的equals方法比較的是兩個物件的引用位址,只有物件的引用位址指向同乙個位址時,才認為這兩個物件相等,否則認為不相等。
如果有兩個物件,我們需要判斷其屬性是否相等,那麼預設的equals方法就不符合我們的要求了,這個時候我們就需要對equals方法進行重寫以滿足我們的需求。
為了維護hashcode()方法的equals協議
如果根據equals()方法,兩個物件是相等的,那麼對這兩個物件的每個物件呼叫hashcode()方法都必須生成相同的整數結果;而兩個hashcode()返回的結果相等時,兩個物件的equals()方法不一定相等。首先我們先準備兩個學生類,該類的屬性有:學號,姓名,性別,年齡,專業。
**如下:
public
class
student
在這裡,我們認為兩個學生的學號和姓名同時相等時則認為兩個學生相等。
首先,我們使用eclipse自動生成equals方法:
@override
public
boolean
equals
(object obj)
elseif(
!name.
equals
(other.name)
)return
false;if
(sno == null)
elseif(
!sno.
equals
(other.sno)
)return
false
;return
true
;}
可以看出這段**是很繁瑣的。
我們分析一下這段**,可以發現其有許多對空的判斷,這些判斷導致了**的繁瑣。而objects類裡提供了空指標安全的物件比較,於是上面的**就可以減少許多**量。
@override
public
boolean
equals
(object obj)
這樣,對於物件屬性的比較就少了許多的**量。 LayoutInflater類簡單使用
layoutinflater 是乙個抽象類,在文件中如下宣告 public abstract class layoutinflater extends object 獲得 layoutinflater 例項的三種方式 1.layoutinflater inflater getlayoutinflat...
Qt MessageBox類簡單使用
qmessagebox類提供了乙個有一條簡短訊息 乙個圖示和一些按鈕的模式對話方塊。訊息框用於提供情報資訊並且問一些簡單的問題。qmessagebox提供了乙個不同資訊的範圍,大致按兩個軸進行排列 嚴重程度和複雜程度。按嚴重程度分 訊息 警告 錯誤。按複雜程度分為乙個按鈕 確定 的簡單訊息 或者用於...
File類簡單使用
file string pathname 根據乙個路徑得到file物件 file string parent,string child 根據乙個目錄和乙個子檔案 目錄得到file物件 file file parent,string child 根據乙個父file物件和乙個子檔案 目錄得到file物件...