equals與 的區別

2021-07-31 08:28:59 字數 882 閱讀 3098

equals:對於沒有重寫equals()方法的物件來說,與== 相同,類似string、integer重寫了equals方法的比較的是值

而==是比較兩個物件的位址

例如:string a="123";

string b="123";

string c= new string("123");

system.out.println(a==b);//結果為true

system.out.println(a==c);//結果為false

system.out.println(b==c);//結果為false

system.out.println(a.equals(b));//結果為true

system.out.println(a.equals(c));//結果為true

system.out.println(b.equals(c));//結果為true

出現這種結果原因:

程式在執行到string a="123"時候會建立乙個字串緩衝池使用,而a這個物件會被建立,其值為"123"。

當程式執行到string b="123"時,程式首先會在這個string緩衝池中尋找相同值的物件,因為在執行

string a="123"這句**時,字串緩衝池中已經有了a這個物件,其值與要建立的物件b的之相等,所以

在字串緩衝池中就不會建立b物件,而是將a對像引用給b(相當與b為a的乙個別名)。

當程式執行string c= new string("123")時,則不會在字串緩衝池找具有相同值的物件,而是會新建

乙個物件c,其值為"123"。

而==是比較物件的位址,equals是比較兩個物件的值。

所以a與b為同乙個物件,其位址相同,而c是不同的物件,其位址與a,b不同。

與equals的區別

注意 當比較兩個基本資料型別的變數是否相等時 基本資料型別包括 byte short int long float double 當它們的值相同時,則 結果就為true eg public class class6 1 public static void main string args stri...

與equals的區別

public class equaltest 執行結果為 t1 t2 false t1 t2 t3 true t3 t4 true i1.equals i2 false i3.equals i1 i2 true i3.equals i4 true st1 st2 false st1 st2 st3 ...

與 equals的區別

與equals都是比較兩個變數得到true或false。在進行比較時,先說說記憶體,記憶體分為堆和棧。基本資料型別中,是把值存在棧中,把值傳遞給變數,這種傳遞叫值傳遞。引用資料型別中,是在棧中存位址,堆中存的new的物件,給變數賦值傳遞時,傳的是位址,這種傳遞叫引用傳遞。基本資料型別 int a 1...