深刻理解this關鍵字

 

this是什麼?算法

在Java語言中,當建立一個對象後,Java虛擬機就會爲其分配一個指向對象自己的指針,這個指針就是「this」。this

this關鍵字有哪些用法?spa

1、調用本類的成員變量指針

class Person{
    private String name;

    public Person(String name){
        this.name = name;
    }
}

上述代碼中,構造方法中的形參與Person類的成員變量名稱相同,若是不使用this關鍵字,不說咱們,編譯器也沒法辨識出是將形參name賦給成員變量仍是將成員變量name賦給形參,code

因此this關鍵字能夠指明參數是該類的成員變量,即this.name = name表示的是將形參name賦給成員變量name。對象

2、調用構造方法blog

class Person{
    private String name;
    private String sex;

    public Person(String name){
        this.name = name;
    }

    public Person(String name,String sex){
        this(name);
        this.name = name;
    }
}

當一個類中有多個含有不一樣參數的構造方法時,可使用this調用其餘的構造方法,而只要傳入合適的參數便可。遞歸

固然這種this調用方式也有必定的限制get

(1)使用this調用其餘構造方法是必須放在該構造方法的第一行編譯器

(2)當類中有多個構造器使用this互相調用時,必須有一個構造器是不使用this調用其餘構造器的,不然將形成互相調用的死循環,相似於遞歸算法,固然這種寫法編譯器也不會經過。

(3)在一個構造方法中只能調用一次

3、調用自身對象

public class Keyword_this {

    public static void main(String[] args){
        Person person1 = new Person("蘋果大大個");
        person1.getInfo();
        System.out.println("我是誰=====>" + person1);
    }

}

class Person{
    private String name;

    public Person(String name){
        this.name = name;
    }

    public void getInfo(){
        System.out.println("我是誰=====>" + this);
    }
}

運行結果:

我是誰=====>test.base.Person@4554617c
我是誰=====>test.base.Person@4554617c

根據結果顯示,main方法中直接打印出來的對象與getInfo方法中打印的this對象是同一個,也就是說this對方法來講就是調用方法的那個對象。

相關文章
相關標籤/搜索