當(dāng)一個對象創(chuàng)建后,Java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是this。因此,this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對不能出現(xiàn)this,并且this只和特定的對象關(guān)聯(lián),而不和類關(guān)聯(lián),同一個類的不同對象有不同的this。

下面我們將通過一個小例子來了解一下this的相關(guān)用法與注意事項:

萬碼學(xué)堂,電腦培訓(xùn),計算機培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

package test;public class ThisTest {    private int i=0;    //第一個構(gòu)造器:有一個int型形參
    ThisTest(int i){       this.i=i+1;//此時this表示引用成員變量i,而非函數(shù)參數(shù)i
       System.out.println("Int constructor i——this.i:  "+i+"——"+this.i);

       System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));       //從兩個輸出結(jié)果充分證明了i和this.i是不一樣的!
    }    //  第二個構(gòu)造器:有一個String型形參
    ThisTest(String s){

       System.out.println("String constructor:  "+s);

    }    //  第三個構(gòu)造器:有一個int型形參和一個String型形參
    ThisTest(int i,String s){       this(s);//this調(diào)用第二個構(gòu)造器       //this(i); this調(diào)用第一個構(gòu)造器

      

       this.i=i++;//this以引用該類的成員變量
       System.out.println("Int constructor:  "+i+"/n"+"String constructor:  "+s);

    }    public ThisTest increment