this关键字用于区分同名参数与成员变量,只能在非静态方法中使用,可调用本类其他构造方法,但需置于首行且不可与super()共存。

在 Java 中,当构造方法或普通方法的参数名与类的成员变量(属性)名相同时,会产生命名冲突。这时用 this 关键字明确指代当前对象的成员变量,就能清晰区分参数和属性。
用 this 明确访问当前对象的成员变量
这是最常见也最直接的用法。在构造方法或 setter 方法中,参数名往往和属性名一致(比如都叫 name、age),此时必须用 this.name 表示类的属性,而 name 表示传入的参数。
例如:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
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 代表当前对象的引用,所以它只能出现在实例方法、构造方法中。不能在 static 方法或 static 块里使用 this,否则编译报错。
- 静态方法没有“当前对象”的概念,因为它是属于类的,不依赖具体实例
- 如果在 static 方法中需要访问成员变量,必须先创建对象再调用,或者把变量改成 static
避免过度使用 this,保持代码可读性
不是所有地方都需要写 this。只有在存在命名冲突时才必须使用;其他情况下(比如方法内部只读取成员变量且无同名局部变量),省略 this 更简洁自然。
- 推荐风格:有冲突时加 this,没冲突时不加
- 有些团队会强制要求所有成员变量都加 this(如 this.name),这属于编码规范,不是语法必需
- 过度使用反而干扰阅读,比如在 getter 方法里 return this.name; 其实写 return name; 更干净
this 还可以用于调用本类其他构造方法(构造器链)
在构造方法第一行,可以用 this(...) 调用同一个类的其他构造方法,实现逻辑复用。
- 必须放在构造方法的第一行
- 不能和 super() 同时出现(二者都必须是首行)
- 常用于简化重载构造方法的重复赋值逻辑
public Person(String name) {
this(name, 0); // 调用含两个参数的构造方法
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










