好多人搞不清equals和==的區別,今天我來**一下,如有誤請批評指正。
我們常常簡單理解為==運算子用來比較兩個基本資料型別的數值是否相同,而equals()方法用來比較兩個物件是否相同。
這樣的理解也可以,但我們還是要看看更深層次的含義,那樣會更加清晰
1,.對於基本資料型別,byte,short,char,int,long,float,double,boolean 他們之間的比較,應用雙等號(==),比較的是他們的值。
int x=1;
int y=1;
system.out.println(x==y);//true
2,主要區別是:==常用於比較原生型別,而equals()方法用於檢查物件的相等性。另乙個不同的點是:如果==和equals()用於比較物件,當兩個引用位址相同,==返回true。而equals()可以返回true或者false主要取決於重寫實現。
string a = new string("hello world");
string b = new string("hello world");
system.out.println(a==b);
//返回為false,比較兩個物件位址
這是因為==比較的是兩個引用時是不是指向同乙個記憶體位址,而equeals比較的是字面值。上面的new就產生了兩個不同的物件,那麼其記憶體位址肯定也就不同了
string a = new string("hello world");
string b = new string("hello world");
system.out.println(a.equals(b)); //返回為true ,比較物件具體內容
總結:1,使用==比較原生型別如:boolean、int、char等等,使用equals()比較物件。
2,==返回true如果兩個引用指向相同的物件,equals()的返回結果依賴於具體業務實現
3,字串的對比使用equals()代替==操作符
JAVA equals和「 」的區別
首先要明白什麼基本型別和引用型別 基本型別 比較的就是值是否相同。和 equals 被重寫之前 都是屬於引用型別。但是equals使用時比較靈活,大多數被重寫使用。實際上jdk中,string math等封裝類都對equals 方法進行了重寫。如果建立物件定義資料型別 比如 string a new...
Java equals和hashCode的理解
我們一般使用equals都是為了比較物件的內容,而object裡面的equals方法卻是比較物件的引用,如下 public boolean equals object obj 所以當我們想要比較的是物件的內容時,需要重寫equals方法,假設user類中有string name int age 兩個...
java equals方法的覆蓋
public boolean equals object obj object中的這個方法比較的是位址,因此我們應當在自己的類中按自己的要求覆蓋這個方法 步驟 測試形參是否為null 測試型別是否匹配 將obj強轉為自己的類所屬的型別。最後,比較所有字段。使用 比較基本資料型別,使用equals方法...