this关键字用于引用当前对象,主要用途包括:区分同名参数与成员变量、调用同类其他构造器、返回当前对象实现链式调用。

区分同名参数和成员变量
这是 `this` 最常见的用法。构造器或方法中,若形参名和成员变量名相同,必须用 `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; // 同理
}
}
在 setter 方法中赋值
为保证封装性,常在 setter 中用 `this` 赋值,尤其当参数名与字段一致时:
- 避免因命名冲突导致赋值失败(如写成
name = name;实际是给参数赋给自己) - 语义清晰,体现“把传入值设给当前对象的字段”
public void setName(String name) {
this.name = name; // 正确:成员变量接收参数值
}
// 错误写法(无效果):
// name = name; // 参数覆盖自己,成员变量未变
调用当前类的其他构造器(构造器链)
`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`,可让调用方连续调用多个方法:
- 常见于 Builder 模式或 Fluent API 设计
- 每个修改状态的方法都返回 `this`,实现点号连续调用
public class PersonBuilder {
private String name;
private int age;
public PersonBuilder name(String name) {
this.name = name;
return this; // 返回当前对象
}
public PersonBuilder age(int age) {
this.age = age;
return this;
}
// 使用:new PersonBuilder().name("Alice").age(30);
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











