閱讀581 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java麵向對象基礎--this關鍵字的解析

this關鍵字的作用:

1、表示類中的屬性。

class Person{		// 定義Person類
	private String name ;		// 姓名
	private int age ;			// 年齡
	public Person(String name,int age){	// 通過構造方法賦值
		this.name = name ; // 為類中的name屬性賦值
		this.age = age ;// 為類中的age屬性賦值
	}
	public String getInfo(){	// 取得信息的方法
		return "姓名:" + name + ",年齡:" + age ;
	}
};
public class ThisDemo02{
	public static void main(String args[]){
		Person per1 = new Person("張三",33) ;	// 調用構造實例化對象
		System.out.println(per1.getInfo()) ;	// 取得信息
	}
};

2、使用this調用本類的構造方法。

構造方法間可以互相調用,使用this(參數)的形式完成。

注意:在使用this關鍵字調用其他構造方法時,this()調用構造方法的語句隻能放在構造方法的首行。

在使用this調用本類中的其他構造方法是,至少有一個構造方法是不用this調用的,以防止遞歸調用的情況出現。

class Person{		// 定義Person類
	private String name ;		// 姓名
	private int age ;			// 年齡
	public Person(){	// 無參構造
		System.out.println("新對象實例化") ;
	}
	public Person(String name){
		this() ;// 調用本類中的無參構造方法
		this.name = name ;
	}
	public Person(String name,int age){	// 通過構造方法賦值
		this(name) ;// 調用有一個參數的構造方法
		this.age = age ;// 為類中的age屬性賦值
	}
	public String getInfo(){	// 取得信息的方法
		return "姓名:" + name + ",年齡:" + age ;
	}
};
public class ThisDemo05{
	public static void main(String args[]){
		Person per1 = new Person("張三",33) ;	// 調用構造實例化對象
		System.out.println(per1.getInfo()) ;	// 取得信息
	}
};


3、表示當前對象。

使用this和引用傳遞比較兩個對象是否相等。

String本身是一個類,進行相等的比較,則要判斷內容,使用equals()方法來完成。

age是int類型,使用 == 即可。

地址相等,則兩個對象相等。地址如果不相等,一次判斷屬性內容是否相等。

class Person{		// 定義Person類
	private String name ;	// 姓名
	private int age ;		// 年齡
	public Person(String name,int age){
		this.setName(name) ;
		this.setAge(age) ;
	}
	public boolean compare(Person per){
		// 調用此方法時裏麵存在兩個對象:當前對象、傳入的對象
		Person p1 = this ;	// 當前的對象,就表示per1
		Person p2 = per ;	// 傳遞進來的對象,就表示per2
		if(p1==p2){	// 判斷是不是同一個對象,用地址比較
			return true ;
		}
		// 之後分別判斷每一個屬性是否相等
		if(p1.name.equals(p2.name)&&p1.age==p2.age){
			return true ;	// 兩個對象相等
		}else{
			return false ;	// 兩個對象不相等
		}
	}
	public void setName(String name){	// 設置姓名
		this.name = name ;
	}
	public void setAge(int age){		// 設置年齡
		this.age = age ;
	}
	public String getName(){
		return this.name ;
	}
	public int getAge(){
		return this.age ;
	}
};
public class ThisDemo08{
	public static void main(String args[]){
		Person per1 = new Person("張三",30) ;	// 聲明兩個對象,內容完全相等
		Person per2 = new Person("張三",30) ;	// 聲明兩個對象,內容完全相等
		// 直接在主方法中依次取得各個屬性進行比較
		if(per1.compare(per2)){
			System.out.println("兩個對象相等!") ;
		}else{
			System.out.println("兩個對象不相等!") ;
		}
	}
};



最後更新:2017-04-03 15:21:43

  上一篇:go hdu 4662 MU Puzzle 模擬
  下一篇:go Java麵向對象基礎--對象數組