兩個物件相等equals和 的區別

2021-08-31 07:49:42 字數 440 閱讀 6761

比如:string s1 = "abc";

string s2 = new string("abc");

equals返回true,但是不「==」,但是他們的hashcode是相同的,為什麼不「==」

最佳答案

string s1 = "abc";

s1指向了「abc」

string s2 = new string("abc");

生成了物件new string("abc");s2指向這個物件,這個物件引用了「abc」;

equals意義是判斷內容是否一直因為s1內容為「abc」,s2內容也為「abc」因此返回true。

==是判斷引用是否一致,s1、s2指向不同所以返回false。

83299387gvirus說法不對「abc」只生成一次,具體是生成在堆還是棧不同虛擬機器實現原理不同。

具體可以參照:

判斷兩個物件內容相等與equals方法

判斷兩個物件內容相等 不能直接呼叫object類裡的equals方法,將equals方法寫到object類當中是讓所有物件都擁有equals方法,它的目的是給開發者重寫的,不然其方法實現的功能與 一模一樣 而用 號是不能判斷兩個物件內容相等的 eg.user a new user user b ne...

判斷兩個物件是否相等 equals 方法重寫分析

如果想要判斷堆中兩個物件的內容是否一樣,需要重寫equals 方法,根據雜湊約定,如果兩個物件的equals 相等,那麼這兩個物件的hashcode 也應該相等,即重寫equals 的同時,也要重寫hashcode 快捷鍵 alt shift s generate hashcode and equa...

比較兩個物件是否相等之重寫equals 方法

題目簡述 自定義乙個person類,有name和age屬性,並建乙個兩個引數的建構函式,在主函式main中,定義兩個person物件p1和p2,如下,呼叫equals比較這個兩個物件是否相等。person p1 new person xiaowang 12 person p2 new person ...