看一段**:
string str1 = new
string("str");
string str2 = new
string("str");
system.out.println("==比較 :"+ (str1 == str2));
system.out.println("equal比較:"+ str1.equals(str2));
結果:
==比較:false
equal比較:true
「==」和」equal」區別:
//「==」對於基本資料型別,判斷兩個變數的值是否相等,即數值比較,也就是用於比較變數所對應的記憶體中所儲存的數值是否相同。
//「equal」不能用於基本資料型別。只能用於類變數。對於基本資料型別要用其包裝類:
int a=3;
int b=2;
integer i1=new
integer(a);
integer i2=new
integer(t2);
system.out.println(i1.equals(i2));
equals方法最初是在所有類的基類object中進行定義的,原始碼是:
public
boolean
equals(object obj)
而在string類對equals進行了重寫:
public boolean equals(object anobject)
if (anobject instanceof string)
return
true;}}
return
false;
}
//物件引用(棧中)儲存的是物件在記憶體(堆)中的路徑,即堆位址。所以用「==」數值比較時,比較的是他們在棧的儲存的內容,即使物件的值相等,但是他們引用儲存的內容(棧內容)不同,所以」==」的結果為false。
//如果乙個類沒有自己定義equals方法,它預設的equals方法(從object類繼承的)就是使用==操作符,也是在比較兩個變數指向的物件是否是同一物件,這時候使用equals和使用==會得到同樣的結果
java 與equal 的區別
判定的是物件的等價性,必須是實實在在地是同乙個物件才返回true。判定基本型的值是否相等。int i1 47 int i2 47 system.out.println i1 i2 output true 基本型包裝類 integer n1 new integer 47 integer n2 new ...
C 中equal與 的區別
轉 c 中,判斷相等有兩種方式,一種是傳統的 操作,一種是object提供的equals方法。二者的區別在於 一 操作符判斷的是堆疊中的值,equlas判斷的是堆中的值。c 提供值型別和引用型別,值型別儲存在棧上,故用 判斷是直接判斷其值是否相等,因為值型別不存在堆中的資料,因此值型別的equals...
C 中equal與 的區別
c 中,判斷相等有兩種方式,一種是傳統的 操作,一種是object提供的equals方法。二者的區別在於 一 操作符判斷的是堆疊中的值,equlas判斷的是堆中的值。c 提供值型別和引用型別,值型別儲存在棧上,故用 判斷是直接判斷其值是否相等,因為值型別不存在堆中的資料,因此值型別的equals也是...