JAVA this关键字

介绍

this 关键字是 Java 常用的关键字,可用于成员方法中,表示 当前对象

关于 “我” 的理解

李雷说:“我叫李雷”,此处的 我 表示李雷

韩梅梅说:“我考了90分”,此处的 我 表示韩梅梅

每个人说的 我,我 表示说话人自己

关于 this 的理解

this 相当于 我,表示当前对象

每个对象都有 this,this 表示的是当前这个对象

注意

不能在 静态方法 中使用

应用场景

  • 当方法中 局部变量 和 成员变量 同名,在不改 变量名 的情况下,访问这个被覆盖的成员变量,必须使用 this

  • 构造方法、成员方法中给 成员变量 赋值、访问 成员变量

构造方法中使用 this

在构造方法中,给 成员变量 赋值、访问成员变量

有一个类 Student 的定义如下:

public class Student {
    private String name;    // 名称
    private int age;    // 年龄
}

在上述代码中 name 和 age 的作用域是 private,因此在 类外部 无法 对它们的值进行设置。

为了解决这个问题,可以为 Student 类添加一个构造方法,然后在构造方法中传递参数进行修改。代码如下:

// 创建构造方法,为上面的3个属性赋初始值
public Student(String name,int age) {
    this.name = name;    // 设置名称
    this.age = age;      // 设置年龄
}

在 Student 类的构造方法中使用了 this 关键字对属性 name 和 age 赋值,this 表示 当前对象。

语句 this.name = name ,等号左边的 this.name 是指 当前对象 的 成员变量 name,等号右边的 name 表示参数传递过来的数值。

创建一个 main() 方法对 Student 类进行测试,代码如下:

public static void main(String[] args) {
    Student student = new Student("李雷",20);
    System.out.println("名称:"+student.name+"年龄:"+student.age);
}

运行该程序,输出的结果如下所示:

名称:李雷
年龄:20

this.方法名

在成员方法中,给成员变量赋值、访问成员变量

同上面的构造方法

一个成员方法,访问另一个成员方法

假设定义了一个 Dog 类,这个 Dog 对象的 run( ) 方法需要调用它的 jump( ) 方法,Dog 类的代码如下所示:

public class Dog {
    // 定义一个jump()方法
    public void jump() {
        System.out.println("正在执行jump方法");
    }
    // 定义一个run()方法,run()方法需要借助jump()方法
    public void run() {
        this.jump(); // 这里的this可以省略
        System.out.println("正在执行 run 方法");
    }
}

执行过程:

像上面这种,同一个类中,一个成员方法,调用另一个成员方法,还可以写成下面这种方式:

// 定义一个run()方法,run()方法需要借助jump()方法
public void run() {
    // 省略 this
    jump();
    System.out.println("正在执行run方法");
}

省略 this. 只是一种假象,实际上这个 this. 依然是存在的。

this.构造方法

this关键字调用其它的构造方法,必须在 构造方法 的 第一行 调用

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

public Student() {
    this.Student("李雷",20);//该行代码必须在第一行
    //在写其他代码
}

原文出处:/show_1EF4raTBOayo.html