最近項目中遇到一個添加判重的問題,判重無效,一直找不到原因,于是查了一下equals的用法,感覺蒙蒙噠~~
添加數據判重,當判重到時間的時候時間都是"yyyy-MM-dd"這樣的,但判重失敗,查了一下,原來equals前后兩個
比較時對象可以不一樣,但數據類型必須得相同,Date類型的"2015-04-15"與String類型的"2015-04-15"著實不一樣,想想也是。。。
以下就是equals和"=="之間的異同:
同:
如果沒有重寫新類的equals方法,則該方法和“==”操作符一樣在兩個變量指向同一對象時返回真。
但是java推薦的是使用equals()方法來判斷兩個對象的內容是否一樣。
異:
equals()是Object類的一個方法,指示某個其他對象是否與此對象“相等”。
Object是類層次結構的根類,它是每個類的超類。每個類都可以重寫equals()方法,Eg:String類。
引用類型比較引用;基本類型比較值。
equals()方法只能比較引用類型,"=="可以比較引用及基本類型。
使用equals()方法進行比較時,對類File、String、Date及封裝類(Wrapper Class)來說,是比較類型及內容。
使用"=="進行比較時,符號兩邊的數據類型必須一致(可相互轉換的基本類型除外),否則編譯出錯。
也就是說,如果比較對象和比較類型相同時,equals和“==”的效果相同,
而equals可以比較不同對象類型相同的內容,“==”比較的必須是同一對象統一地址統一數據類型的內容。
新聞熱點
疑難解答