Java 和equals的普遍重寫

2021-09-14 03:55:35 字數 804 閱讀 8437

public class testequals 

}class user

@override //這個hashcode加不加這裡沒關係

public int hashcode()

@override //自動生成就行,因為用的是固定套路

public boolean equals(object obj)

//認為id相同就是乙個人,不管其輸入的名字

}

執行結果:

false

#################

true

#################

false

#################

false

所用到規則:

==用到的就是直接比較雙方是否相同,如果是基本型別(基本型別,它的值就是乙個數字,乙個字元或乙個布林值。)則表示值相等;

引用型別(它的值是指向記憶體空間的引用,就是位址,所指向的記憶體中儲存著變數所表示的乙個值或一組值)則表示位址相等即是同乙個物件。==不能夠進行重寫;

equals 方法預設就是比較兩個物件的hashcode(hashcode是jdk根據物件的位址或者字串或者數字算出來的int型別的數值),也就是說預設比較的是兩個物件的位址相同則true不同則flase;

通常我們對equal會進行重寫,比如說乙個系統裡乙個人註冊了n個號,我們是根據其手機號判斷是否為乙個人的號,而不是暱稱等資訊;就連object類裡定義的string.equals方法也是經過重寫的,不在是位址相同為true,而是字串完全相同判斷為true

java中equals和 的思考

首先是 操作符。針對物件而言,是兩個物件引用指向的物件的內部位址是否一致,如果一致,就是true,否則就是false,假設,有乙個類a,用a定義了乙個物件 a a new a a a1 a 其中的a和a1就是物件引用,a引用指向的位址是a物件的內部位址,此時a賦值給a1,a1也指向了新物件a的內部位...

Java「 」和equals 之間的比較

用來比較基本資料型別的值,或引用型別變數的雜湊值 實現就是呼叫 public boolean equals object obj 但有的類會重寫該方法,例如string,這是乙個物件,它的equals不是用來比較位址,而是用來比較字串的每乙個字元值 public boolean equals obj...

Java 中equals 和 的區別

疑問 equals 和 是用來幹什麼的?1 比較8種基本資料型別的引用位址,是否一樣 2 比較引用物件的內容,即堆的記憶體位址,是否一樣 疑問 兩者區別?public boolean equals object o 如果不重寫equals 兩者是沒有區別的。分析下string中兩者的區別 strin...