大飛_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