java中的this指針有兩種用法,一是用在構(gòu)造函數(shù)中,二是用在公用方法中。
定義:是一個(gè)系統(tǒng)隱含的指針,被自動(dòng)附加在非靜態(tài)的成員函數(shù)的參數(shù)列表中。(靜態(tài)函數(shù)內(nèi)部沒有this指針)
1.在構(gòu)造函數(shù)中的用法
用來(lái)把參數(shù)賦值給與構(gòu)造函數(shù)形參同名的成員變量。
class A
{
int i = 1;
public A(int i) //構(gòu)造函數(shù)
{
this.i = i; //如果寫成i = i,明顯不合適
}
}
public class Test
{
public static void main(String[] args)
{
A a1 = new A(2);
System.out.printf("i = %d\n", a1.i);
}
}
輸出結(jié)果:i = 2
2.在公用方法中
同一個(gè)類創(chuàng)建出來(lái)的對(duì)象在堆中都有屬于自己的數(shù)據(jù)成員,但公用方法是放在代碼區(qū)共用的。當(dāng)調(diào)用公用方法對(duì)數(shù)據(jù)成員進(jìn)行操作時(shí),并不知道操作的是哪個(gè)對(duì)象中的成員,因此有了隱含的this指針,每一個(gè)非static方法中都隱含一個(gè)this指針,指向當(dāng)前正在調(diào)用該方法的對(duì)象。
class A
{
int i = 1;
public A(int j)
{
i = j;
}
public void show()
{
System.out.printf("i = %d\n", this.i); //this是隱含的,可寫可不寫,但一般寫出
}
}
public class Test
{
public static void main(String[] args)
{
A a1 = new A(2);
A a2 = new A(3);
a1.show();
a2.show();
}
}
i = 2
i = 3