必须用 this 区分同名参数与成员变量,否则局部变量优先导致属性未赋值;标准写法为 this.属性名 = 参数名,常见于构造器和 setter 方法,static 方法中不可用 this。

在 Java 中,当方法参数或构造器参数与类的属性(成员变量)同名时,直接赋值会导致参数覆盖自身,属性实际未被修改。这时必须用 this 明确指向当前对象的属性。
为什么需要 this 来区分
Java 在局部作用域内优先使用同名的参数或局部变量。如果不加 this,像 name = name; 这样的语句,右边的 name 是参数,左边的 name 也是参数(不是属性),属性依然保持默认值(如 null 或 0)。
标准写法:this.属性名 = 参数名
-
左边必须带
this.:表示要赋值给当前对象的成员变量 -
右边不带
this.:表示使用传入的参数值 - 常见于构造器和 setter 方法中
示例:
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name; // ✅ 正确:this.name 是属性,name 是参数
this.age = age; // ✅ 正确
}
public void setName(String name) {
this.name = name; // ✅ 正确
}
public void setAge(int age) {
this.age = age; // ✅ 正确
}
}
哪些地方容易出错
- 忘记写
this.,导致属性未初始化(运行时为null或0) - 误写成
this.name = this.name;,逻辑错误且无意义 - 在
static方法里使用this—— 编译不通过(this只属于实例上下文)
补充说明
即使没有命名冲突,显式写 this.name 也能增强可读性,表明这是当前对象的属性。但非必需;有冲突时则是必须的。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











