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(...)同时出现(二者都要求放在第一行) - 常用于构造方法重载时的逻辑合并
示例:
public class Person {
private String name;
private int age;
public Person() {
this("未知", 0); // 调用含两个参数的构造方法
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
作为方法返回值或传参使用
this 是一个引用,类型就是当前类本身,因此可以:
- 作为方法的返回值(常用于链式调用,如 builder 模式)
- 作为参数传递给其他方法(比如监听器注册、回调通知等)
- 在内部类中访问外部类实例(
OuterClass.this)
链式调用示例:
public class StringBuilderExample {
private String content = "";
public StringBuilderExample append(String str) {
this.content += str;
return this; // 返回当前对象,支持连续调用
}
public String toString() {
return this.content;
}
}
// 使用:new StringBuilderExample().append("Hello").append(" World").toString();
不是所有情况都需要显式写 this
只要没有歧义,Java 允许省略 this。比如在方法内访问成员变量,且不存在同名局部变量时,直接写 name 和写 this.name 效果一样。
但为保持代码清晰、统一风格,部分团队规范会建议:
- 一律使用
this.field访问成员变量(增强可读性) - 只在必要时(如参数同名)才强制使用,避免冗余
关键不是“要不要用”,而是“能不能准确表达意图”。理解 this 的本质——它就是一个指向当前对象的引用,用对了,代码更健壮、更易维护。


















