this是Java的一個關(guān)鍵字,表示某個對象。this可以出現(xiàn)在實例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。
在構(gòu)造方法中使用this
this關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時,代表使用該構(gòu)造方法所創(chuàng)建的對象。
例如:
public class People { int leg,hand; String name; People(String s) { name = s; this.init(); //可以省略this.,即寫成init(); } void init() { leg = 2; hand = 2; System.out.println(name+"有"+hand+"只手"+1eg+"條腿"); } public static void main(String args[]) { People boshi = new People("布什"); } }
在實例方法中使用this
實例方法只能通過對象來調(diào)用,不能通過類名來調(diào)用。當(dāng)this關(guān)鍵字出現(xiàn)在實例方法中時,就代表正在調(diào)用該方法的當(dāng)前對象。
實例方法可以操作類的成員變量,當(dāng)實例成員變量在實例方法中出現(xiàn)時,一般格式為:
this.成員變量;
當(dāng)static成員變量在實例方法中出現(xiàn)時,一般格式為:
類名.成員變量;
例如:
class A { int x; static int y; void a() { this.x = 10; A.y = 20; } }
該A類中的實例方法a中出現(xiàn)了this,this代表使用a的當(dāng)前對象,所以“this.x”就表示當(dāng)前對象的變量x,當(dāng)對象調(diào)用方法a時,將10賦給該對象的變量x。當(dāng)一個對象調(diào)用方法時,方法中的實例成員變量就是指分配給該對象的實例成員變量,而static變量和其他對象共享。因此,通常情況下,可以省略實例成員變量名字前面的“this.”以及static變量前面的“類名.”。
例如:
class A { int x; static int y; void a() { x = 10; //省略this. y = 20; //省略類名. } }
注意:
當(dāng)實例成員變量的名字和局部變量的名字相同時,成員變量前面的“this.”或“類名.”就不可以省略。
類的實例方法可以調(diào)用類的其他方法,對于實例方法調(diào)用的一般格式為:
this.方法;
對于類方法調(diào)用的一般格式為:
類名.方法;
例如:
class B { void b() { this.c(); B.d(); } void c() { System.out.println("hi"); } static void d() { System.out.println("ok"); } }
該B類中的方法b中出現(xiàn)了this,this代表調(diào)用方法b的當(dāng)前對象,所以方法b的方法體中this.c()就是當(dāng)前對象調(diào)用方法c,也就是說,在某個對象調(diào)用方法b的過程中,又調(diào)用了方法c。由于這種邏輯關(guān)系非常明確,一個實例方法調(diào)用另-個方法時可以省略方法名字前面的“this.”或“類名.”。
例如:
class B { void b() { c(); //省略this. d(); //省略類名. } void c() { System.out.println("hi"); } static void d() { System.out.println("ok"); } }
注意:
this不能出現(xiàn)在類方法中,這是因為類方法可以通過類名直接調(diào)用,這時可能還沒有任何對象誕生。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程