java中 與 equal 的區別

2021-08-07 05:40:56 字數 1158 閱讀 9135

看一段**:

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也是...