必须在形参名与成员变量名相同时使用this来区分;如Person构造方法中this.name=name赋值成员变量,否则name=name导致成员变量未初始化;还可用于调用本类构造方法、传当前对象、内部类引用外部类。

在 Java 中,当方法参数或局部变量与类的成员变量同名时,用 this 可以明确指代当前对象的成员变量,从而避免歧义。
什么时候必须用 this?
当构造方法或普通方法中,形参名和成员变量名相同时,编译器无法自动区分,此时必须用 this.成员变量名 来访问成员变量。
- 不加
this:系统默认使用参数值,成员变量未被赋值 - 加
this:明确告诉编译器“我要操作的是当前对象的成员变量”
常见写法示例
比如定义一个 Person 类:
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.,赋值语句就变成 name = name,相当于自己给自己赋值,成员变量始终是默认值(null 或 0)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
其他适用场景
this 不仅用于解决重名,还可用于:
- 在构造方法中调用本类另一个构造方法:
this(参数)(必须放在第一行) - 将当前对象作为参数传递给其他方法:
otherMethod(this) - 在内部类中引用外部类实例:
OuterClass.this
注意事项
不是所有重名都需要 this,只有在作用域冲突、需要明确区分时才必须用。如果参数名和成员变量名不同,比如用 userName 和 name,那就不需要 this。
过度使用 this(如 this.getName() 在无歧义时)虽不报错,但会降低可读性,建议按需使用。

















