在Java中,this用于区分同名参数与成员变量,避免赋值歧义;只能用于非静态上下文;还可调用本类其他构造方法、在方法中明确属性赋值或传递当前对象。

在 Java 中,当构造方法的参数名和类的成员变量(属性)名相同时,用 this 关键字来明确指代当前对象的属性,避免歧义。
为什么需要 this?
如果不加 this,编译器会认为你在给参数赋值给自己,导致属性未被初始化。例如:
public class Person {
private String name;
public Person(String name) {
name = name; // ❌ 错误:把参数 name 赋给了自己,属性没变
}
}
这时属性 name 依然是 null,而参数 name 的值被丢弃了。
用 this 区分参数和属性
加上 this 后,this.name 明确表示当前对象的成员变量,参数名则保持不变:
立即学习“Java免费学习笔记(深入)”;
- this.name → 当前对象的 name 属性
- name → 构造方法的形参
正确写法:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name; // ✅ 把参数值赋给属性
this.age = age; // ✅ 同理
}
}
this 只能用在非静态上下文中
this 指代当前实例对象,所以它不能出现在 static 方法或静态代码块里。否则编译报错:
public static void print() {
System.out.println(this.name); // ❌ 编译错误:无法从静态上下文中引用 this
}
其他常见使用场景
this 不仅用于构造方法,还常用于:
- 调用本类的另一个构造方法(必须放在第一行):this(…)
- 在普通方法中区分同名参数和属性:this.field = field;
- 将当前对象作为参数传递:service.process(this);


















