this关键字用于区分同名成员变量与参数或局部变量,必须在非静态方法中使用,还可调用本类重载构造器。

在 Java 中,当方法参数或局部变量与成员变量同名时,this 关键字可明确指向当前对象的成员变量,从而避免歧义。
用 this 区分同名成员变量和参数
这是最常见的使用场景。构造器或 setter 方法中,参数名常与字段名一致,此时必须用 this.字段名 指代成员变量:
- 不加
this:编译器默认使用局部变量(如参数),成员变量被“遮蔽” - 加上
this.name:明确访问当前对象的name字段
例如:
class Person {private String name;
public Person(String name) {
this.name = name; // this.name 是成员变量,name 是参数
}
}
在普通方法中同样适用
不只是构造器,任何实例方法内,只要存在同名局部变量,都可用 this 显式访问成员变量:
立即学习“Java免费学习笔记(深入)”;
- 方法内声明了与字段同名的变量,会覆盖(遮蔽)字段访问
- 需通过
this.field才能读写该字段
例如:
public void setName(String name) {String temp = name + " (temp)";
this.name = temp; // 必须用 this.name,否则赋值给局部变量无效
}
注意 this 不能用于静态上下文
this 代表当前实例对象,因此只能在非静态方法或构造器中使用:
- 在 static 方法中使用
this会导致编译错误 - 静态方法没有所属实例,不存在“当前对象”的概念
若需在静态方法中操作字段,应通过对象引用调用,或改用实例方法处理。
其他用途:调用本类重载构造器
this(...) 可在构造器第一行调用本类其他构造器,实现代码复用:
- 必须是构造器中的第一条语句
- 避免重复初始化逻辑,提升可维护性
例如:
public Person(String name) {this(name, 0); // 调用含两个参数的构造器
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}


















