API之Object類

            Object

    Object類是Java語言中的根類,也就是所有類中的父類,它的所有方法子類都可以使用,所有類在創建的時候,最終找的父類就是Object類。找不到一個類的父類不是Object類。Object類的方法中,用的比較多的就equals方法和toString方法。

 方法:

1、equals方法:


            此方法用比較兩個對象是否相同,其實就是用兩個對象的內存地址在進行比較,返回值是布爾類型的。方法的參數是Object類型的,表示什麼類型的都可以傳進去,方法的內部使用的就是“==”比較運算符。

    所以假如創建兩個同類型的對象,p1p2.如果用:

  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

2toString方法:


          toString方法返回該對象的字符串表示,其實該字符串內容就是對象的類型+@+內存地址值。

   由於toString方法返回的結果是內存地址,而在開發中,經常需要按照對象的屬性得到相應的字符串表現形式,因此也需要重寫它。

 Person類中:


    這個方法在主方法中直接調用即可。運行結果爲對象的姓名和年齡。所以這個方法的好處也就是可以直接看到變量的值。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章