課程
/后端開發
/Java
/Java入門第三季
equals()比較的到底是對象的引用是否指向同一內存地址,還是比較的對象的值是否相同
2015-09-23
源自:Java入門第三季 2-2
正在回答
那要看調用equals()方法的對象所對應的類 里的equals方法是怎么寫的了。
舉個例子。
一般的類沒有重寫Object類的equals()方法,比如你隨便定義一個類Student,那么當我Student t = new Student();t.equals(??)這里就會調用父類的equals()方法。Object類里的equals方法比較的是地址,所以我寫的這個類比較的也是地址。
而有些類為了一些使用上的方便合理,于是便重寫了equals()方法。比如String類,當我們使用字符串時,當他們內容相同時,我們會認為他們沒有什么不同,我們希望兩個內容一致的String對象用equals()比較會返回true。而String類中的equals()方法正是這樣重寫的,只要內容相等,A.equals(B)就是true,在String的對象調用equals()方法時,就是比較內容。
當然,我們也可以自己去重寫equals()方法,從而讓我們自己寫的類達到自己的期望。比如說,依然是一個Student類,我現在希望說如果兩個Student姓名,學號相同,我就認為他們是一樣的。我就可以重寫equals()方法,如果兩個對象的id、name全相等,那么就返回true,否則返回false。
所以記住Object類里的equals()方法比較的就是地址,而所有的類都直接或間接繼承自Object,這些子類的equals()方法是比較什么,就看他們是如何重寫equals()的。重寫equals()最典型的例子就是String類了。
小僧一戒 提問者
就像 兩個人,比較長相一樣不。? 也就是內容一樣不
沒重寫的equals()就是比較的就是地址,重寫了比較的就是你自己定義的內容
內容是否相等
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
5 回答為什么用equals比較是false
2 回答equals與==比較
4 回答course2用equals比較為什么出來的是false?
1 回答equals()什么情況下比較內容,什么情況下比較地址呢?
3 回答equals重寫中obj是比較對象 this是被比較對象?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-09-23
那要看調用equals()方法的對象所對應的類 里的equals方法是怎么寫的了。
舉個例子。
一般的類沒有重寫Object類的equals()方法,比如你隨便定義一個類Student,那么當我Student t = new Student();t.equals(??)這里就會調用父類的equals()方法。Object類里的equals方法比較的是地址,所以我寫的這個類比較的也是地址。
而有些類為了一些使用上的方便合理,于是便重寫了equals()方法。比如String類,當我們使用字符串時,當他們內容相同時,我們會認為他們沒有什么不同,我們希望兩個內容一致的String對象用equals()比較會返回true。而String類中的equals()方法正是這樣重寫的,只要內容相等,A.equals(B)就是true,在String的對象調用equals()方法時,就是比較內容。
當然,我們也可以自己去重寫equals()方法,從而讓我們自己寫的類達到自己的期望。比如說,依然是一個Student類,我現在希望說如果兩個Student姓名,學號相同,我就認為他們是一樣的。我就可以重寫equals()方法,如果兩個對象的id、name全相等,那么就返回true,否則返回false。
所以記住Object類里的equals()方法比較的就是地址,而所有的類都直接或間接繼承自Object,這些子類的equals()方法是比較什么,就看他們是如何重寫equals()的。重寫equals()最典型的例子就是String類了。
2015-09-24
就像 兩個人,比較長相一樣不。? 也就是內容一樣不
2015-09-23
沒重寫的equals()就是比較的就是地址,重寫了比較的就是你自己定義的內容
2015-09-23
內容是否相等