當一個對象創(chuàng)建后,java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是this。this是指向對象本身的一個指針。this只和特定的對象關聯(lián),而不和類關聯(lián),同一個類的不同對象有不同的this。
1、使用this調用成員變量和成員函數(shù)
使用this調用成員變量:this .成員變量
//Person類class Person{ String name;//成員變量name void talk(){ //成員函數(shù)talk() System.out.
class test{ public static void main(String args[]){ Person p1 = new Person(); p1.name = "zhangsan"; p1.talk(); Person p2 = new Person(); p2.name = "lisi"; p2.talk(); }}
this是對象,代表 調用了這個函數(shù)的對象。
當成員變量和參數(shù)(局部變量)的名字相同時,在方法體中如果不加this,使用的是參數(shù)而不是成員變量,要使用成員變量的話必須加this。this用于區(qū)別成員變量和參數(shù)。在沒有同名的情況下,可以直接用成員變量的名字,可省略this,最好加上
例子如下:
//Person類class Person{ String name;//成員變量name void talk(String name){ //成員函數(shù) System.out.println("My name is " + name); }}
class test{ public static void main(String args[]){ Person p1 = new Person(); p1.name = "zhangsan"; p1.talk("zhangsan 1"); Person p2 = new Person(); p2.name = "lisi"; p2.talk("lisi 1"); }}
this同樣可以調用本類中的成員函數(shù):this .函數(shù)名
如果在某個變量前面加上一個this關鍵字,其指的就是這個對象的成員變量或者方法,而不是指成員方法的形式參數(shù)或者局部變量。
2、使用this調用構造函數(shù)
//Person類class Person{ String name; //成員變量name int age; String addr; Person(){ //構造函數(shù) System.out.println("沒有參數(shù)的"); } Person(String name ,int age){ //成員變量和參數(shù)重名 this(); //調用沒有參數(shù)的構造函數(shù) this.name=name; //用this把參數(shù)賦值給成員變量 this.age=age; System.out.println("兩個參數(shù)的"); } Person(String name,int age ,String addr){ this(name,age); //this(參數(shù)列表):根據(jù)傳入的參數(shù)個數(shù)和類型來調用本類中其他的構造函數(shù) this.addr=addr; System.out.println("三個參數(shù)的"); }}class test{ public static void main(String args[]){ Person p1 = new Person("zhangsan",20,"北京"); }}
當使用this(參數(shù)列表)來調用本類中其他的構造函數(shù)時,這行代碼必須是第一條語句,構造函數(shù)內只能調用一個構造函數(shù)。
新聞熱點
疑難解答