Java關鍵字this的用法總結

大飛_Rflyee:http://blog.csdn.net/rflyee/article/details/12057289

首先了解一下java中類的引用,

對於java中類的引用,可以這樣理解:

public class A{
	public static void main(String[] args){
		B b1 = new B();
		B b2 = new B();
		
		b1.reName(1);	//1
		b2.reName(2);	//2
	}
}
class B{
	public void reName(int i){...}
}

對於類似這樣的定義,編譯器是如何知道到底是b1還是b2調用了reName()?其實在這裏編譯器做了一些幕後工作。
它把調用方法的對象作爲一個參數傳遞給了方法reName()。所以可以這樣理解上述調用:B.reName(b1,1);B.reName(b2,2);(當然這些只是內部表現形式)

以下爲正題:

1、對“調用方法的那個對象”的引用,
對於在方法內部引用當前類的對象我們一般不會按上邊那樣引用,而是使用Java提供的關鍵字this。
this只能在方法內部使用;表示對“調用方法的那個對象”的引用。因此一般只有當需要當前對象的引用時,才使用this關鍵字。比如:
public class BigApple{
	...
	public BigApple getInstance(){
		return this;  	//this:該方法所屬類的對象的引用
	}
}
	

2、在構造器中調用構造器
但是需要注意:
1、必須在起始處,否則編譯錯誤;
2、只能調用一個構造方法,兩個以上錯誤。
3、只有在構造方法中纔可以調用構造方法,其他方法不可以。
public class Person{
	String name = null;
	int age = 0;
	
	public Person(String name,int age){
		this(String name);		//1、必須在起始處,否則編譯錯誤;2、只能調用一個構造方法,兩個以上錯誤。
								//此處完全可以改爲this.name = name; 所以只作爲例子說明,不代表這樣寫的好處。
		this.age = age;
	}
	public Person(String name){
		this.name = name;
	}
}

3、以上也展示了this的另外一種用法:this.name = name; 這是爲了區分參數和數據成員;(顯然前邊爲數據成員,後邊爲參數)


大飛_Rflyee:http://blog.csdn.net/rflyee/article/details/12057289


發佈了57 篇原創文章 · 獲贊 86 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章