← 返回首页
JavaSE系列教程(十九)
发表时间:2019-12-25 15:26:24
讲解this关键字的三种使用方式。

this是指向当前对象的引用,也就是指向调用当前方法的那个对象。

例如以下代码:

public class Person {
    String name;
    String gender;
    int age; 
    Person() {
        System.out.println("一个人从世界上诞生了...");
    }
    Person(String name, String gender, int age) {
        this.name = name; //this指向了主方法中的new Person("张三","男",35);这个对象。
        this.gender = gender;
        this.age = age;
    }

    public static void main(String[] args) {
        Person p1 = new Person("张三", "男", 35);
    }
}

1.this调用当前属性

例如:

class Book{//定义书的类
    private String name;//书的名字
    private double price;//书的价格
    public Book(String name,double price){
        this.name = name;
        this.price = price;
    }

    public String getInfo(){
        return "书籍:" +this. name + ",价格:" +this. price; //this.name 调用当前对象的属性
    }
}
public class Test{
    public static void main(String args[]){
        System.out.println(new Book("Java",89.9).getInfo());
    }
}

this还有一个重要的作用就是当局部变量(方法体内的变量)的名字与成员变量重名时,我们可以使用this关键字来区分是成员变量还是局部变量。例如上述代码中,this.name=name; 表示把局部变量name赋值给成员变量name。

2.this调用成员方法

例如:

//人类
public class Person {
    String name;
    String gender;
    int age; //实例变量,属性,成员变量
    Person() {
        System.out.println("一个人从世界上诞生了...");
    }
    Person(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }
    public void sleep(){
        System.out.println(this.name+"正在睡觉zzz...");
    }
    public void intoRestRoom(){
        System.out.println(this.name+"进入休息室...");
        this.sleep(); //调用当前对象的成员方法
    }
    public static void main(String[] args) {

        Person p1 = new Person("张三", "男", 35);
        p1.intoRestRoom();
    }
}

3.this调用本类其它构造方法

this可以在构造方法中调用本类其它构造方法,但是必须出现在构造方法的第一句。 例如:在设计人类时,要求每创建一个人类对象都必须打印"一个人从世界上诞生了...",可以在Person类的带参数的构造方法中去调用默认不带参数的构造方法。

代码如下:

//人类
public class Person {

    String name;
    String gender;
    int age; //实例变量,属性,成员变量

    Person() {
        System.out.println("一个人从世界上诞生了...");
    }

    Person(String name, String gender, int age) {
        this(); //调用本类的其它构造方法,必须出现在构造方法的第一句。
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public void sleep(){
        System.out.println(this.name+"正在睡觉zzz...");
    }

    public void intoRestRoom(){
        System.out.println(this.name+"进入休息室...");
        this.sleep(); //调用当前对象的成员方法
    }

}

小结:

1.this是指向当前对象的引用,指向调用当前方法的哪个对象。

2.this可以调用当前对象的属性、成员方法和构造方法。在成员方法中this可以用来区分局部变量和成员变量。

3.this可以在构造方法中调用本类的其它构造方法,要求必须出现在构造方法的第一句。