當前位置:編程學習大全網 - 網站源碼 - 為什麽重寫equals

為什麽重寫equals

先說壹說 == 比較

對於基本數據類型 == 比較的是數值

對於引用數據類型 == 比較的是地址

我們在初學Java時,String類我們會使用equals來比較兩個字符串的值是否相等

有些同學就會誤認為equals比較的是引用類型的值。

但實際上,所有對象繼承自Object類。默認情況下,equals比較的仍然是地址。

我們來看壹看Object中equals方法的源碼

this代表代用該方法的對象,obj表示要比較的對象。

我們發現,equals方法又回到了兩者用等於號比較。

即引用數據類型 == 比較的是地址。

那為什麽String類調用equals比較的是值呢?

因為String類重寫了equals方法

String類equals的源碼:

首先還是用==號比較,如果地址相同。兩者當然也相同。

然後下壹步,將裏面的值進行了比較。

對於大部分Java原生對象,大多都重寫了equals方法。

如果不確定,可以ctrl+鼠標左鍵點擊進行查看。

所以我們在自定義對象時,如果不重寫equals方法。

那麽比較的將是兩個對象的地址,即使值相同。但兩者地址不同,仍然會判斷為不相等。

  • 上一篇:微信小程序開發市場有哪些
  • 下一篇:手遊全國錦標賽如何回收裝備?
  • copyright 2024編程學習大全網