當(dāng)一個(gè)對(duì)象創(chuàng)建后,Java虛擬機(jī)(JVM)就會(huì)給這個(gè)對(duì)象分配一個(gè)引用自身的指針,這個(gè)指針的名字就是this。因此,this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對(duì)不能出現(xiàn)this,并且this只和特定的對(duì)象關(guān)聯(lián),而不和類關(guān)聯(lián),同一個(gè)類的不同對(duì)象有不同的this。
下面我們將通過一個(gè)小例子來了解一下this的相關(guān)用法與注意事項(xiàng):
package test;public class ThisTest { private int i=0; //第一個(gè)構(gòu)造器:有一個(gè)int型形參 ThisTest(int i){ this.i=i+1;//此時(shí)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)); //從兩個(gè)輸出結(jié)果充分證明了i和this.i是不一樣的! } // 第二個(gè)構(gòu)造器:有一個(gè)String型形參 ThisTest(String s){ System.out.println("String constructor: "+s); } // 第三個(gè)構(gòu)造器:有一個(gè)int型形參和一個(gè)String型形參 ThisTest(int i,String s){ this(s);//this調(diào)用第二個(gè)構(gòu)造器 //this(i); this調(diào)用第一個(gè)構(gòu)造器 this.i=i++;//this以引用該類的成員變量 System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s); } public ThisTest increment