在Java中,equals和==都是用於檢測兩個字符串是否相等,返回類型也都是boolean值,但是二者內部處理卻不一樣。
==與equals( )
==在Java中是一個二元操作符,用於比較原生類型和對象。當比較基本類型時,較為好理解;當比較對象時,比較規則是:兩個對象基於內存引用,若兩個對象的引用完全相同,則==返回的結果為true。
equals( )方法是Object( )類中,根據具體的業務邏輯來定義該方法,用於檢查兩個對象的相等性。默認是equals方法實現與==操作是一樣的,所以在業務中一般都會重寫equals( )。
==和equals比較時
1.如果比較基本數據類型(或者說是值變量)
當時Java的基本類型做比較時,應使用 == 比較的是他們的值,而equals是不存在的。因為int float等是基本數據類型,沒有equals( )方法,不存在int.equals( )
2.如果比較的是復合數據類型(或者說是引用型變量)
當比較引用型變量時:
==比較的是兩個引用是否指向同一個對象實例
equals( )比較看是否被重寫,如果有被重寫則按照重寫的規則比較,沒有重寫則與==比較規則一樣。
(下圖為String中重寫的equals( )方法)