this关键字用于引用当前对象成员变量以解决同名歧义,可调用本类其他构造器或实例方法,但不可在静态上下文中使用。

在 Java 中,this 关键字用于明确引用当前对象的成员变量,主要解决局部变量(比如构造方法或方法的参数)与成员变量同名时的歧义问题。
构造方法中用 this 区分参数和成员变量
当构造方法的参数名和类的成员变量名相同时,直接赋值会把参数值赋给自身(即局部变量),而不会修改成员变量。这时必须用 this.成员变量名 来指定给对象的字段赋值。
例如:
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 也会默认访问成员变量,但显式使用 this.name 能增强可读性,尤其在代码逻辑复杂或团队协作时更清晰。
立即学习“Java免费学习笔记(深入)”;
例如:
public void setName(String name) {this.name = name; // 即使没冲突,也推荐这样写
}
public void introduce() {
System.out.println("I'm " + this.name); // 明确表示是实例字段
}
this 还能调用当前对象的其他方法或构造器
除了访问字段,this 也可以用来调用本类的其他实例方法,或在构造器中调用本类的其他构造器(必须是第一行语句)。
- this():调用本类其他构造器,常用于构造器重载时复用初始化逻辑
- this.方法名():调用当前对象的实例方法,尤其在 setter 或链式调用中常见
例如:
public Person(String name) {this(name, 0); // 调用含两个参数的构造器
}
public Person setName(String name) {
this.name = name;
return this; // 支持链式调用,如 new Person().setName("Alice").setAge(25)
}
注意:不能在静态上下文中使用 this
this 代表当前对象实例,而静态方法或静态块不依赖于任何实例,因此在 static 方法、static 块或静态内部类中直接使用 this 会导致编译错误。
例如以下写法是非法的:
public static void printName() {System.out.println(this.name); // 编译错误!静态方法中无 this
}


















