Object類
Object類是Java語言中的根類,也就是所有類中的父類,它的所有方法子類都可以使用,所有類在創建的時候,最終找的父類就是Object類。找不到一個類的父類不是Object類。Object類的方法中,用的比較多的就equals方法和toString方法。
方法:
1、equals方法:
此方法用比較兩個對象是否相同,其實就是用兩個對象的內存地址在進行比較,返回值是布爾類型的。方法的參數是Object類型的,表示什麼類型的都可以傳進去,方法的內部使用的就是“==”比較運算符。
所以假如創建兩個同類型的對象,p1和p2.如果用:
boolean b=p1.equals(p2);最後得出的結果是false。因爲這兩個對象在堆中的地址是不一樣的。
開發中如果要比價兩個對象是否相同,經常會根據對象中的屬性值進行比較,所以在開發中需要子類重寫equals方法,使方法根據對象的屬性值進行比較。
如下的代碼:比較兩個人的年齡是否相等。
Person類中的代碼:
/*
描述人這個類,並定義功能根據年齡判斷是否是同齡人
由於要根據指定類的屬性進行比較,這時只要覆蓋Object中的equals方法
在方法體中根據類的屬性值進行比較
*/
public class Person {
private String name;
private int age ;
public String String(){
return name+age;
}
//添加構造方法
public Person(){
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重寫equals方法
public boolean equals(Object obj){
//判斷是否跟自己比
if(this==obj){
return true;
}
//判斷是否爲空
if(obj==null){
return false;
}
//核心判斷,如果obj是Person類型的,可以進行比較,比較年齡的時候要向下轉型,
if (obj instanceof Person) {
Person p = (Person)obj;
return this.age==p.age;
}else{
return false;
}
}
}
其中equals方法中進行是否爲空和自身比價判斷是爲了提高運行的效率。
主方法中的代碼:
public static void main(String[] args) {
Person p1=new Person("張一", 24);
Person p2=new Person("張二", 20);
boolean b=p1.equals(p2);
System.out.println(b);
String s=p1.String();
System.out.println(s);
}
最後的運行結果:因爲兩個人的年齡是不相等的。所以結果爲false。2、toString方法:
toString方法返回該對象的字符串表示,其實該字符串內容就是對象的類型+@+內存地址值。
由於toString方法返回的結果是內存地址,而在開發中,經常需要按照對象的屬性得到相應的字符串表現形式,因此也需要重寫它。
Person類中:
這個方法在主方法中直接調用即可。運行結果爲對象的姓名和年齡。所以這個方法的好處也就是可以直接看到變量的值。