this是java中引用当前对象实例的关键字,用于区分同名成员变量与参数、调用本类其他构造方法(须首行且唯一)、支持链式调用返回当前对象,但不可在静态上下文中使用。

在 Java 中,this 是一个关键字,用于引用当前对象的实例本身。它常用于区分成员变量与参数名冲突、调用本类其他构造方法、或在方法中明确返回当前对象等场景。
用 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(...) 调用本类的另一个构造方法,但必须放在第一行。
- 只能在构造方法中使用,且只能出现一次
- 不能和
super(...)同时出现
例如:
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 在方法中返回当前对象(支持链式调用)
在 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); // 链式调用
注意:this 不能在静态上下文中使用
this 指向的是具体实例,而静态方法/静态块不依赖于任何实例,因此在 static 方法、static 块或静态内部类中直接使用 this 会编译报错。
例如以下写法是错误的:
public static void printInfo() {
System.out.println(this.name); // 编译错误!静态方法中不能用 this
}
不复杂但容易忽略 —— 关键是理解 this 的本质:它就是“正在执行这段代码的那个对象自己”。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











