對這個問題,如果要回答的全面的話,我們應該這麼講:
當參與==
比較的兩個元素中有乙個是值型別的,那麼就按照值型別來比較。而引用型別按照值來比較的時候使用的是它們的hashcode()
的返回結果。只有當參與比較的兩個元素都是引用型別的,那麼才按照引用型別來比較,即比較它們的hashcode()
的返回結果。
當使用equals()
方法進行比較的時候,實際的比較結果取決於equals()
方法的具體實現,在 object 的預設實現中,是使用==來實現的。也就是說使用了按引用來比較的方式。不過,比如 integer 和 string 等,它們在自己的類中又實現了該方法,而它們實現該方法的時候是按照值來進行比較的。
另外就是關於覆寫equals()
和hashcode()
方法的問題,覆寫它們要遵循一定的原則,不過這些工作完全可以由 idea 代勞。
驗證**
public
static
void
main
(string.
..args)
private
static
class
myobj
}
輸出結果:
true
false
true
false
false
java 與equals的區別
號比較引用型別比較的是位址值是否相同 equals 比較引用型別預設也是比較位址值是否相同,而string類重寫了equals 方法,比較的是內容是否相同。package name public class text02 執行結果為 false true true true 字串如果是變數相加,先開...
java 「 」與 equals()的異同
通俗的講,是看看左右是不是乙個東西。equals是看看左右是不是長得一樣。等於,equals 相同。兩個長得一樣的人,只能說長的相同 equals 但是不等於他們倆是乙個人。你只要記住equals,就不用記了。理論的講,1.是判斷兩個變數或例項是不是指向同乙個記憶體空間 2 equals是判斷兩個變...
java中equals 與 的區別
public class teststring 這個程式真是簡單啊!可是有什麼問題呢?1.來自 string 的憂慮 上面這段程式中,到底有幾個物件呢?可能很多人脫口而出 兩個,s1 和 s2 為什麼?string 是 final 類,它的值不可變。看起來似乎很有道理,那麼來檢測一下吧,稍微改動一下...