Java 基础教程

关键字 this

在 Java 中,不仅仅允许定义成员变量,也可以在方法(包含构造方法)、代码块中定义局部变量(包括方法的参数)。如果我们定义的局部变量和成员变量出现命名冲突怎么办呢?如下面代码:

class User {
    private int id;
    private String name;
    
    public User(int id, String name) {
        id = id;
        name  = name;
    }
    
    // ...
}

上面代码中,User 类的构造函数中定义了局部变量 id 和 name,此时两者的名字和 User 类的成员变量冲突了。为了解决该问题,我们首先想到的是修改构造方法参数的参数名。但是,这种解决办法不是很优雅。于是,Java 引入了关键字 this 来解决这个问题。

this 关键字用来表明方法所属的当前对象,可以分为两种情况:

  • 在普通方法中,关键字 this 代表方法的调用者,即本次调用了该方法的对象。例如:

import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {
    private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public void showDate() {
        System.out.println(this.dateFormat.format(new Date()));
    }

    public static void main(String[] args) {
        Demo demo = new Demo();
        demo.showDate();
    }

}

运行示例,输出结果如下:

2022-09-04 15:20:30

上面代码中,showDate() 方法中的 this 表示 demo 对象。

  • 在构造方法中,关键字 this 代表了该构造方法本次运行所创建的那个新对象。例如:

public class Demo {
    private String name;

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

    public String getName() {
        return this.name;
    }

    public static void main(String[] args) {
        Demo demo = new Demo("Tom");
        System.out.println("name=" + demo.getName());
    }

}

运行示例,输出结果如下:

name=Tom

上面代码中,Demo 构造方法中的 this 表示我们新创建的对象 demo。

this 关键字就是一个特殊的引用类型变量,起到通配符的作用,除了其变量名和引用关系是强制规定的之外,可以将其当作普通的引用变量来使用,即通过“this.成员”的方式来访问其引用的当前对象的属性和方法。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号