需要this关键字来区分同名的构造器参数和成员变量,避免赋值失效;其用法包括:赋值时写this.字段名、仅适用于实例变量、只在构造器或实例方法中有效,并可用于调用其他构造器或传递当前对象。

在 Java 中,当构造器参数名与成员变量名相同时,用 this 关键字可以明确指代当前对象的成员变量,从而避免歧义。
为什么需要 this?
Java 允许构造器参数和成员变量同名,但编译器默认会把同名标识符当作局部变量(即参数)处理。如果不加区分,成员变量就无法被赋值,导致初始化失效。
this 的基本用法:赋值时明确指向成员变量
在构造器中,用 this.成员变量名 = 参数名 的形式,把参数值赋给当前对象的成员变量。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
语法格式固定:必须写成
this.字段名,不能省略this. -
仅限于实例变量:静态变量不能用
this访问,否则编译报错 -
只在构造器或实例方法内有效:静态上下文中不可使用
this
一个典型示例
假设有一个 Person 类:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name; // this.name 指成员变量,name 指参数
this.age = age; // 同理
}
}
如果去掉 this.,写成 name = name,那就只是把参数赋给自己,成员变量依然为 null 或默认值。
其他适用场景
this 不仅用于构造器,在实例方法中也可用于区分同名参数和成员变量:
- 在 setter 方法中:如
public void setName(String name) { this.name = name; } - 调用本类其他构造器(必须是第一行):如
this("未知", 0); - 将当前对象作为参数传递:如
eventHandler.register(this);
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










