Java中的運算符” == “和equals()的差別

我們無法使用關係運算符 <、>、<= 和 >= 來比較字符串類型的值。
但我們可以使用 == 和 != 來比較字符串,但是” == “和” != “比较的是引用是否相同,即俩个对象的地址。
” == “檢查兩個對像是否存儲在同一內存位置,而不是檢查是否包含相同的值。
我們可以使用equals() 和 compareTo() 等子程序來比較字符串。(Eck, 2019)
equals()比較的是兩個對象的内容,判斷的是兩個對象的引用是否指向同一個對象。

equals()方法的好處:
假設現在有很多姓名對象,要判斷多個姓名是否相等,則需要根據姓名存放的地址判斷,若存放的地址對象地址相等,那麼可以確定姓名對象一定是一樣的。
但若是想在多筆姓名資料中,查詢有無重複相同姓名,當查到相同姓名時,認為對象是相等的,不一定需要姓名的對象的地址完全相同,這邊就可以使用equals解決問題。

equals()方法的缺點:

在缺點方面,若是不是在想查詢是否有無重複相同姓名的條件下,equals方法可能會被誤解,而導致不正確的results。
假設有兩個名字都叫John的人,此John非此John,那他們就是兩筆不同的資料。 他們需要分別有不同地址被保,,兩個John是不同的人,這時候用” == “會比較好。
所以” == “和equals()必須看情況使用。

以下我把字串Apple賦予新字串到Apple2,在” == “的測試條件下Apple1 != Apple2
而在equals()的條件下得到Apple1 equals Apple2

輸出

參考

Eck, D. J. (2019). Introduction to programming using Java, version 8.1. Hobart and William Smith College.