this是Java的一個關鍵字,表示某個物件。 this可以出現在實例方法和建構方法中,但不可以出現在類別方法中。
在建構方法中使用this
this關鍵字出現在類別的建構方法中時,代表使用該建構方法所建立的物件。
例如:
publicclassPeople{intleg,hand;Stringname;People(Strings){name=s;this.init();//可以省略this.,即寫成init();}voidinit(){leg=2;hand=2;System .out.println(name+有+hand+隻手+1eg+條腿);}publicstaticvoidmain(Stringargs[]){Peopleboshi=newPeople(布希);}}
在實例方法中使用this
實例方法只能透過物件來調用,不能透過類別名稱來調用。當this關鍵字出現在實例方法中時,就代表正在呼叫該方法的目前物件。
實例方法可以操作類別的成員變量,當實例成員變數在實例方法中出現時,一般格式為:
this.成員變數;
當static成員變數在實例方法中出現時,一般格式為:
類別名稱.成員變數;
例如:
classA{intx;staticinty;voida(){this.x=10;Ay=20;}}
在A類中的實例方法a中出現了this,this代表使用a的當前對象,所以「this.x」就表示當前對象的變數x,當對象調用方法a時,將10賦給該對象的變量x。當物件呼叫方法時,方法中的實例成員變數就是指指派給該物件的實例成員變量,而static變數和其他物件則共用。因此,通常情況下,可以省略實例成員變數名字前面的「this.」以及static變數前面的「類別名稱.」。
例如:
classA{intx;staticinty;voida(){x=10;//省略this.y=20;//省略類別名稱.}}
注意:
當實例成員變數的名字和局部變數的名字相同時,成員變數前面的「this.」或「類別名稱.」就不可以省略。
類別的實例方法可以呼叫類別的其他方法,對於實例方法呼叫的一般格式為:
this.方法;
對於類別方法呼叫的一般格式為:
類別名稱.方法;
例如:
classB{voidb(){this.c();Bd();}voidc(){System.out.println(hi);}staticvoidd(){System.out.println(ok);}}
在該B類中的方法b中出現了this,this代表調用方法b的當前對象,所以方法b的方法體中this.c()就是當前對象調用方法c,也就是說,在某個對象調用方法b的過程中,又呼叫了方法c。由於這種邏輯關係非常明確,一個實例方法在呼叫另-個方法時可以省略方法名字前面的「this.」或「類別名稱.」。
例如:
classB{voidb(){c();//省略this.d();//省略類別名稱.}voidc(){System.out.println(hi);}staticvoidd(){System.out.println( ok);}}
注意:
this不能出現在類別方法中,這是因為類別方法可以透過類別名稱直接調用,這時可能還沒有任何物件誕生。