在java中 和equals之間的區別

2021-08-09 19:25:21 字數 745 閱讀 4719

首先參考文章

對於==

1.==操作符專門用來比較兩個變數的值是否相等,也就是用於比較變數所對應的記憶體中所儲存的數值是否相同

當為基本資料型別的時候,比較的是值的相等。

當為物件的引用的時候,比較的是引用物件在堆上儲存的首位址。

2.equals,當我們比較的是自己定義的物件的時候,如果沒有重寫預設的是繼承object的equal,

boolean equals(object o)

從原始碼可以看出比較的也是儲存的首位址,這符合我們new 不同物件開闢記憶體儲存的不相等的邏輯

當我們比較的是string,即經常用的型別的時候,就要檢視string的equal的實現原始碼了

public boolean equals(object arg0) else

}return true;}}

return false;}}

從原始碼可以看出,首先比較的是位址是否相等,然後比較的是型別是否符合,接著比較的是 長度是否相等,在接著比較的是組成string的子符挨個是否相等,

所以就有了

string a = new string("a");

string b = new string("a");

system.out.println(a == b);

system.out.println(a.equals(b));

第乙個false,比較的是位址false,第二個比較的是字元,相等!!!

java中 和 equals區別

是比較2個物件是否相等,物件包括基本型別的變數和引用型別變數 object類是所有類的父類 並且 equals是其中的方法 所以說 和equals 本質上都是一樣的 object 類中的equals 方法是 public boolean equals object o return this o 其...

Java中 和equals 的區別

1.用於比較引用資料型別和比較基本資料型別時具有不同的功能 比較基本資料型別,如果兩個值相同,則結果為true。eg package demo public class demo boolean compare int x int y else return false 這段 返回false。而在比...

Java中 和equals的區別

我們在寫程式的過程中,判斷會將兩個物件進行對比。比如拿字串來說吧!string hello hello string greeting hello string str new string hello system.out.println hello.equals greeting hello.e...