1. 程式人生 > >Java中this關鍵字原理及作用

Java中this關鍵字原理及作用

this關鍵字

一:this關鍵字的作用
*當方法的區域性變數和類的變數名重名時,在不使用this的情況下會有什麼結果?

Person

String name;//定義當前Person名字

//引數name是目標名字
//成員變數name是自己名字
public  void sayHello(String name) {
	System.out.println(name+",你好。我是"+name);
}

Demo01Person

public static void main(String[] args) {
	Person person = new Person();
	//設定當前person名字
	person.name = "王健林";
	//呼叫sayHello方法
	person.sayHello("王思聰");
}

執行結果:王思聰,你好。我是王思聰
總結:根據“就近原則”,優先使用區域性變數。

*當方法的區域性變數和類的變數名重名時,使用this的情況下會有什麼結果?

Person {

String name;//定義當前Person名字

//引數name是目標名字
//成員變數name是自己名字
public  void sayHello(String name) {
	System.out.println(name+",你好。我是"+this.name);
}

Demo01Person {

public static void main(String[] args) {
	Person person = new Person();
	//設定當前person名字
	person.name = "王健林";
	//呼叫sayHello方法
	person.sayHello("王思聰");
}

執行結果:王思聰,你好。我是王健林
總結:當我們使用this.成員變數名時,就可以訪問本類當中的成員變數。
由此我們可以總結出:使用this關鍵字可以準確的進行屬性的標記
二:this關鍵字的原理
*跟著上面的程式碼 我們列印一下person和方法中的this的地址
Person {

String name;//定義當前Person名字

//引數name是目標名字
//成員變數name是自己名字
public  void sayHello(String name) {
	System.out.println(this);
}

Demo01Person {

public static void main(String[] args) {
	Person person = new Person();
	//設定當前person名字
	person.name = "王健林";
	//呼叫sayHello方法
	person.sayHello("王思聰");
	System.out.println(person);
}

列印結果:[email protected] [email protected]
從結果我們可以看出,person和方法中this的地址是一樣的。
由此我們可以總結出:通過誰呼叫的方法,誰就是this