在Java中,当局部变量与成员变量同名时,需用this.明确访问成员变量,最常见于构造方法和setter方法中;若省略this会导致赋值错误且难以排查。

在 Java 中,当局部变量(比如构造方法或方法的参数)与成员变量同名时,成员变量会被“隐藏”,此时用 this.成员变量名 就能明确访问当前对象的成员变量。
什么时候需要 this 访问被隐藏的成员变量
最常见于构造方法和 setter 方法中:参数名和成员变量名一致,编译器默认使用参数(局部变量),必须用 this 指明要赋值给对象自身的成员变量。
- 构造方法中初始化同名字段
- setter 方法中为字段赋新值
- 避免命名冲突,提高代码可读性
标准写法示例
以下是一个典型场景:
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.age 指成员变量,age 指参数
}
// setter 方法
public void setName(String name) {
this.name = name; // 必须用 this,否则赋值的是参数本身(无意义)
}
}
不加 this 会怎样
如果省略 this.,例如写成 name = name;,相当于把参数赋给自己,成员变量根本没被修改,值始终是默认值(null 或 0)。这种错误不会报错,但逻辑出错,极难排查。
立即学习“Java免费学习笔记(深入)”;
其他注意事项
-
this只能在非静态方法或构造方法中使用(静态上下文中没有当前对象) -
this后面只能跟当前类已声明的成员变量或方法,不能用于局部变量 - 即使没发生隐藏(参数名不同),也可以显式写
this.name,增强可读性,但非必须


















