this关键字用于引用当前对象实例,主要用途包括:①区分同名参数与成员变量;②构造器链调用本类其他构造方法(首行);③返回当前对象实现链式调用;④将当前对象作为参数传递。

在 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; // this.age 指成员变量,age 指参数
}
}
- 不加
this会导致赋值失败(参数覆盖自身,成员变量仍为默认值) - 这是
this最常见也最实用的用法
调用本类其他构造方法(构造器链)
在一个构造方法中,可用 this(...) 调用同一类中的其他构造方法,必须放在第一行。
立即学习“Java免费学习笔记(深入)”;
例如:
public class Person {
private String name;
private int age;
public Person() {
this("Unknown", 0); // 调用含两个参数的构造方法
}
public Person(String name) {
this(name, 18); // 调用含两个参数的构造方法
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
- 避免重复初始化逻辑,提升代码复用性
- 注意:不能在普通方法中使用
this(...),仅限构造方法首行 - 不能同时出现
this(...)和super(...)
返回当前对象实例(支持链式调用)
在 setter 方法中返回 this,可实现方法链调用,让代码更简洁流畅。
例如:
public class Person {
private String name;
private int age;
public Person setName(String name) {
this.name = name;
return this; // 返回当前对象
}
public Person setAge(int age) {
this.age = age;
return this;
}
}
// 使用方式:
Person p = new Person().setName("Alice").setAge(25);
- 每个 setter 返回
this,就能连续调用多个方法 - 适用于构建器模式、配置类等场景
- 注意返回类型需声明为当前类(或其父类/接口),不能是
void
将当前对象作为参数传递给其他方法
有时需要把当前对象传给静态方法、工具类或监听器,这时用 this 表示“我就是这个对象”。
例如:
public class Button {
private String label;
public Button(String label) {
this.label = label;
registerListener(this); // 把当前按钮实例传给注册方法
}
private static void registerListener(Button button) {
// 处理监听逻辑
System.out.println("Registered: " + button.label);
}
}
- 适合回调、事件注册、工厂注入等场景
- 确保传递的是正在构造/运行的对象本身,而非副本或 null
- 注意避免循环引用或内存泄漏(尤其在持有长生命周期对象时)


















