1. 程式人生 > >Java之this關鍵字

Java之this關鍵字

this是Java的一個關鍵字,表示某個物件。this可以出現在例項方法和構造方法中,但不可以出現在類方法中

 一:在構造方法中使用this

this關鍵字出現在類的構造方法中時,代表使用該構造方法所建立的物件

public class This_keyword {
	int hand,mouse;
	String name;
	This_keyword(String s){
		name = s;
		this.init();
	}
	void init(){
		mouse = 1;
		hand = 2;
		System.out.println(name + "有" + hand + "隻手");
	}

	public static void main(String[] args) {
		This_keyword people = new This_keyword("Andy");
		//建立people時,構造方法中的this就是指物件people
	}
}

其中在構造方法people(String s)中,this是可以省略的,即"this.init()"可以改成"init()"。 

二:在例項方法中使用this

例項方法只能通過物件來呼叫(即你建立了一個物件,呼叫一個例項方法 物件名.例項方法名() ),不能用類名來呼叫(也就是不能 類名.方法名 這樣使用)。當this關鍵字出現在例項方法中時,this就代表正在呼叫該方法的當前物件。例如:

public class This_keyword {
	static int hand;
	String name;
	void init(String s){
		this.name = s;
		This_keyword.hand= 2;
		System.out.println(name + "有" + hand + "隻手");
	}

	public static void main(String[] args) {
		This_keyword people = new This_keyword();
		people.init("Andy");
	}
}

通常情況下,是可以省略例項成員變數名字前面的“this.”以及static變數前面的“類名.”的。

But,當例項成員變數的名字與區域性變數的名字相同時,成員變數名字前面的“this.”或“類名.”就不可以省略。例如:

public class This_keyword {
	static int hand;
	String name;
	void init(String s){
		this.name = s;
		this.hand= 2;
		int hand = 8;
		System.out.println(name + "有" + this.hand + "隻手");
		System.out.println(name + "有" + hand + "隻手");
		//加this.與不加this.的結果是不一樣的!
	}

	public static void main(String[] args) {
		This_keyword people = new This_keyword();
		people.init("Andy");
	}
}