this在Java构造方法中用于区分同名参数与成员变量,或调用本类其他构造方法(须为首行),不可在静态上下文或未初始化完成时使用。

在 Java 构造方法中,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; // this.age 指成员变量,age 指参数
}
}
用 this 调用本类其他构造方法
一个构造方法可通过 this(...) 调用同一类中的其他构造方法,但必须是该构造方法的第一条语句:
public class Person {
private String name;
private int age;
public Person() {
this("Unknown", 0); // 调用含两个参数的构造方法
}
public Person(String name) {
this(name, 18); // 调用含两个参数的构造方法
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
不能用 this 的常见错误
以下写法是非法的:
立即学习“Java免费学习笔记(深入)”;
- this 出现在构造方法非首行位置调用其他构造方法(编译报错)
- 在 static 方法或静态代码块中使用 this(没有当前对象)
- 在构造方法中用 this 引用还未声明或未完成初始化的成员(逻辑上可行,但需注意初始化顺序)
注意事项
成员变量在构造方法执行前已分配内存并赋予默认值(如 null、0、false),所以 this.成员名 总是安全的;但若在构造过程中依赖尚未赋值的成员,可能得到默认值,需留意业务逻辑。


















