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(...) 可在一个构造器中调用同一类的其他构造器,必须作为第一条语句出现。
立即学习“Java免费学习笔记(深入)”;
- 只能调用一个其他构造器
- 不能在已调用 super() 后再使用 this()
- 避免构造逻辑重复,提升代码复用性
例如:
public class Person {
private String name;
private int age;
public Person() {
this("Unknown", 0); // 调用含两个参数的构造器
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
将当前对象作为参数传递
在需要把当前实例传给其他方法(如监听器注册、回调、集合添加)时,可用 this 作为实参。
- 常用于事件注册,如 button.addActionListener(this)
- 可用于链式调用中返回当前对象(如 builder 模式)
- 注意循环引用风险,尤其在持有长生命周期对象时
在内部类中明确访问外部类成员
非静态内部类中,若内部类有同名成员,可用 OuterClass.this.member 访问外部类的成员。
例如:
public class Outer {
private String value = "outer";
class Inner {
private String value = "inner";
public void print() {
System.out.println(value); // 输出 "inner"
System.out.println(this.value); // 输出 "inner"
System.out.println(Outer.this.value); // 输出 "outer"
}
}
}


















