string a = new
string("foo");
string b = new
string("foo");
這裡如果使用表達a.equals(b),返回的是true;如果使用表示式a==b返回的false;
因為:這裡的兩條new語句建立了兩個物件,然後用a,b這兩個變數分別指向了其中的乙個物件,這是兩個不同的物件,它們兩的首位址是不相同的,所以a和b中儲存的數值是不相同的。因此,表示式a==b返回的是false,而這兩個物件的內容是相同的,所以表示式a.equals(b)返回的是true.
擴充套件:關於string s==null 和string.equals(「」)的區別
在進行「==」或者equals()判斷時,會先進行賦值
string s = null: 建立乙個s物件,但是這個物件未指向任何的引用
string s =「」:建立乙個s物件,而且這個物件指向了乙個(「」)空的字串
下圖更加直觀地體現了「==」和equals()的區別
引申:hashcode
1、如果兩個物件相等,那麼他們一定有相同的雜湊值(hash code)。
2、如果兩個物件的雜湊值相等,那麼這兩個物件有可能相等也有可能不相等。(需要再通過equals來判斷)
java中equals和 的思考
首先是 操作符。針對物件而言,是兩個物件引用指向的物件的內部位址是否一致,如果一致,就是true,否則就是false,假設,有乙個類a,用a定義了乙個物件 a a new a a a1 a 其中的a和a1就是物件引用,a引用指向的位址是a物件的內部位址,此時a賦值給a1,a1也指向了新物件a的內部位...
Java 中equals 和 的區別
疑問 equals 和 是用來幹什麼的?1 比較8種基本資料型別的引用位址,是否一樣 2 比較引用物件的內容,即堆的記憶體位址,是否一樣 疑問 兩者區別?public boolean equals object o 如果不重寫equals 兩者是沒有區別的。分析下string中兩者的區別 strin...
Java中「equals「和「 「的區別
1.在基本資料型別中 對於基本型別而言,判斷的是兩個變數的值是否相等 equals 不能用於基本資料型別,如果要比較,就需要使用基本型別對應的包裝類 2.在引用型別中 比較的是變數的值在棧記憶體中存放的物件的堆記憶體位址 即比較引用的記憶體位址 equals 比較的是兩個物件的值是否相同 不是比較記...