Java學習 - this的用法

1 this作爲當前類的對象調用類中的方法

示例:

public class Student {
    private String name = "張三";
    private Integer age = 21;

    public void prtName(){
        System.out.println("name = " + name);
    }

    public void prtAge(){
        System.out.println("age = " + age);
    }

    public void prtNameAge1(){
        this.prtName();
        this.prtAge();
    }

    public void prtNameAge2(){
        prtName();
        prtAge();
    }
}
public class ThisDemo {
    public static void main(String[] args){
        Student student = new Student();
        student.prtNameAge1();
        student.prtNameAge2();
    }
}

運行結果:


上例情況下,Student類中prtNameAge1()方法中的this即表示ThisDemo 類中student對象。prtNameAge1()方法和prtNameAge2()方法相同的輸出結果看出在類方法中調用其他的本類方法並不一定需要使用this,直接使用方法名調用就可以,所以開發中可以省略。

2 this在構造方法(構造器)中的使用

在構造器中,由於屬性名和方法參數名相同,所以使用this進行區分,以免混淆,這種用法十分常見;

示例:

public class Student {
    private String name;
    private Integer age;

    public Student() {
    }

    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}

3 在構造器中調用構造器,減少重複代碼

示例:

public class Student {
    private String name;
    private Integer age;

    public Student() {
    }

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

    public Student(Integer age) {
        this.age = age;
    }

    public Student(String name, Integer age) {
        this(name);
        this.age = age;
    }
}

示例中的this(name)調用了該類中的Student(String name)構造方法來完成name屬性的構建,使代碼減少冗餘,但是,一個構造器中值允許調用一個構造方法,示例中調用了Student(String name)方法,便不能待使用this調用Student(Integer age)方法;

4 this作爲方法的返回值將調用該方法的對象重新返回,可以對對象進行多重操作;

示例:

public class Student {
    private String name;
    private Integer age;

    public Student() {
    }

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

    public Student(String name, Integer age) {
        this(name);
        this.age = age;
    }

    public Student prtName(){
        System.out.println("name = " + name);
        return this;
    }

    public Student prtAge(){
        System.out.println("age = " + age);
        return this;
    }

    public void prtNameAge(){
        prtName();
        prtAge();
    }
}
public class ThisDemo {
    public static void main(String[] args){
        Student student = new Student("宙斯",800);
        student.prtName().prtAge().prtNameAge();
    }
}

運行結果:


示例中的prtName()方法prtAge()方法重新將student對象返回,使得可以使用student.prtName().prtAge().prtNameAge()對該對象進行多重操作。



發佈了47 篇原創文章 · 獲贊 25 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章