首先參考文章
對於==
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...