重写Java Object类中的equals()方法
生活随笔
收集整理的這篇文章主要介紹了
重写Java Object类中的equals()方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java中的Object類中的equals方法
- Object類的equals方法
- 重寫Object類的equals()方法
Person類默認繼承了Object類,所以可以使用Object類的equals方法.
boolean equals(Object obj)指示其他某個對象是否與此對象“相等”。
Object類的equals方法
Object類equals方法的源碼:
public boolean equals(Object obj) {return (this == obj);}參數:
Object obj:可以傳遞任意的對象
==比較運算符,返回的是一個布爾值 true/false
基本數據類型:比較的是值
引用數據類型:比較的是兩個對象的地址值
未重寫equals()方法:
Person p1=new Person("迪麗熱巴",18);Person p2=new Person("迪麗熱巴",18);boolean b=p1.equals(p2);System.out.println(b);//比較的是地址,輸出結果為:false重寫Object類的equals()方法
Object類的equals方法,默認比較的是兩個對象的地址值,沒有意義,所以我們要重寫equals方法,比較兩個對象的屬性(name,age)
問題:
隱含著一個多態
多態的弊端:無法使用子類特有的內容(屬性和方法)
Object obj = p2 = new Person(“古力娜扎”,19);
解決:可以使用向下轉型(強轉)把obj類型轉換為Person
重寫equals()的源碼
@Overridepublic boolean equals(Object obj){//使用向下轉型,把obj轉換為Person類型Person p=(Person) obj;//比較兩個對象的屬性,一個對象是this(p1),一個對象是p(obj->p2)boolean b = this.name.equals(p.name) && this.age == p.age;return b;}重寫后比較的是名字和年齡相不相同,都相同則相等,返回true
重寫了equals()方法:
總結
以上是生活随笔為你收集整理的重写Java Object类中的equals()方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八大排序算法(理论和动态图)
- 下一篇: 数据结构-单链表(C语言代码)