1.對於java的基本類型,只能用 「==」 來判斷值是否相等。java
2.對於Java的對象:數組
2.1 若是用的是「==」,那麼是判斷的是兩個對象的引用地址是否相同。設計
2.2 若是用的是equals(), 那麼分析以下:對象
1)對於通常的對象都繼承與Object,且沒有重寫equals(),。繼承
沒有重寫equals()方法的源碼:equals與==是等效,比較的是兩個對象的引用地址是否相同。圖片
2)String 對象特例,由於重寫了equals方法:字符串
爲了不繫統中大量產生String對象,因而就設計了一個字符串池(String Pool),它所容納的可是String對象。源碼
建立機制是這樣的:引用
String 重寫的equals()方法:方法
將此字符串與指定的對象進行比較。當且僅當參數不是null而且是表示與此對象相同的字符序列的String對象時,結果爲true。
判斷條件:
1.若當前對象和比較的對象是同一個對象,即return true。也就是Object中的equals方法。
2.若當前傳入的對象是String類型,則比較兩個字符串的長度,即value.length的長度。
若長度不相同,則return false
若長度相同,則按照數組value中的每一位進行比較,不一樣,則返回false。若每一位都相同,則返回true。
若當前傳入的對象不是String類型,則直接返回false