1.1 equals方法
qwe.jpg
equals方法,用于比較兩個對象是否相同,它其實就是使用兩個對象的內(nèi)存地址在比較。Object類中的equals方法內(nèi)部使用的就是==比較運算符。
在開發(fā)中要比較兩個對象是否相同,經(jīng)常會根據(jù)對象中的屬性值進行比較,也就是在開發(fā)經(jīng)常需要子類重寫equals方法根據(jù)對象的屬性值進行比較。如下代碼演示:
/*
描述人這個類,并定義功能根據(jù)年齡判斷是否是同齡人
由于要根據(jù)指定類的屬性進行比較,這時只要覆蓋Object中的equals方法
在方法體中根據(jù)類的屬性值進行比較
*/
class Person extends Object{
int age ;
//復(fù)寫父類的equals方法,實現(xiàn)自己的比較方式
public
boolean equals(Object obj) {
//判斷當(dāng)前調(diào)用equals方法的對象和傳遞進來的對象是否是同一個
if(this
== obj){
return
true;
}
//判斷傳遞進來的對象是否是Person類型
if(!(obj
instanceof Person)){
return
false;
}
//將obj向下轉(zhuǎn)型為Perosn引用,訪問其屬性
Person
p = (Person)obj;
return
this.age == p.age;
}
}
注意:在復(fù)寫Object中的equals方法時,一定要注意public boolean equals(Object obj)的參數(shù)是Object類型,在調(diào)用對象的屬性時,一定要進行類型轉(zhuǎn)換,在轉(zhuǎn)換之前必須進行類型判斷。
1.2 toString方法
[圖片上傳中。。。(2)]
toString方法返回該對象的字符串表示,其實該字符串內(nèi)容就是對象的類型+@+內(nèi)存地址值。
由于toString方法返回的結(jié)果是內(nèi)存地址,而在開發(fā)中,經(jīng)常需要按照對象的屬性得到相應(yīng)的字符串表現(xiàn)形式,因此也需要重寫它。
class Person extends Object{
int age ;
//根據(jù)Person類的屬性重寫toString方法
public
String toString() {
return
"Person [age=" + age + "]";
}
}