this用于区分同名成员变量与参数/局部变量,构造器和setter中必须用this.name赋值;支持链式调用返回当前对象;不可在静态上下文中使用。

在 Java 中,当方法参数或局部变量与成员变量同名时,用 this 可以明确指代当前对象的成员变量,避免歧义。
构造方法中初始化同名成员变量
这是最常见也最典型的场景:构造方法参数名和成员变量名一致,必须用 this.成员变量名 赋值,否则会赋值给参数本身(无意义)。
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name; // this.name 指成员变量,name 指参数
this.age = age; // 同理
}
}
普通方法中区分同名变量
在 setter 或业务方法里,若参数/局部变量与成员变量重名,也要靠 this 明确访问目标。
- 不加
this:编译器优先匹配最近作用域的变量(如参数),导致成员变量未被修改 - 加
this:强制访问当前实例的成员变量 - 例如:
setName(String name) { this.name = name; }
链式调用中返回当前对象
this 还可作为方法返回值,实现链式调用(Builder 模式常用):
立即学习“Java免费学习笔记(深入)”;
public Person setName(String name) {
this.name = name;
return this; // 返回当前对象,支持如 new Person().setName("Tom").setAge(25);
}
注意不能在静态上下文中使用 this
this 代表当前实例,只存在于非静态方法或构造器中。若在 static 方法或静态代码块里写 this,编译直接报错。
- 错误示例:
public static void print() { System.out.println(this.name); } - 原因:静态方法属于类,不依赖任何对象实例










