要用 this 区分同名参数和成员变量,避免参数遮蔽字段导致成员变量未初始化;this.成员变量名 = 参数名 是标准写法,仅限实例上下文使用。

在 Java 构造器中,当参数名与成员变量名相同时,用 this 可以明确指向当前对象的成员变量,避免歧义。
为什么要用 this?
Java 不允许在同一个作用域内重复声明同名变量。构造器参数和类字段重名时,参数会“遮蔽”(shadow)字段。不加 this,赋值语句实际操作的是参数本身,而非成员变量,导致字段未被初始化。
this 的典型写法
格式统一为:this.成员变量名 = 参数名;。这是最常见、最清晰的用法。
- 必须写在赋值等号左边是成员变量,右边是参数
- this 只能出现在构造器或实例方法内部,静态上下文中不能用
- 不能写成 this(参数) —— 那是调用本类其他构造器,属于构造器链,不是字段赋值
一个完整例子
假设有一个 Person 类:
立即学习“Java免费学习笔记(深入)”;
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 或 0)。运行时看似没报错,实则逻辑错误,容易引发空指针或业务异常。


















