解释 Java 中 this 关键字的常见用法:
public class ThisKeywordExamples {// 实例变量private String name;private int age;private double salary;// 1. 区分实例变量和局部变量(构造方法中)public ThisKeywordExamples(String name, int age) {// this.name 表示实例变量,name 表示构造方法的参数(局部变量)this.name = name;this.age = age;}// 2. 区分实例变量和局部变量(普通方法中)public void setSalary(double salary) {// this.salary 表示实例变量,salary 表示方法参数this.salary = salary;}// 3. 调用当前类的其他构造方法(必须位于构造方法的第一行)public ThisKeywordExamples(String name, int age, double salary) {// 调用上面的双参数构造方法this(name, age);this.salary = salary;}// 4. 调用当前类的其他方法public void printFullInfo() {System.out.println("完整信息:");// 调用当前类的 printBasicInfo() 方法this.printBasicInfo();System.out.println("薪资:" + this.salary);}public void printBasicInfo() {System.out.println("姓名:" + this.name + ",年龄:" + this.age);}// 5. 作为方法的返回值(返回当前对象)public ThisKeywordExamples updateAge(int newAge) {this.age = newAge;// 返回当前对象的引用,可实现方法链式调用return this;}// 6. 作为参数传递给其他方法public void sendToDatabase() {// 将当前对象作为参数传递给其他方法DatabaseUtil.save(this);}public static void main(String[] args) {// 测试构造方法中的 this 用法ThisKeywordExamples person = new ThisKeywordExamples("张三", 25);person.setSalary(8000.0);// 测试调用当前类方法的 this 用法person.printFullInfo();// 测试作为返回值的 this 用法(链式调用)person.updateAge(26).printBasicInfo();// 测试作为参数的 this 用法person.sendToDatabase();}
}// 辅助类:演示 this 作为参数传递
class DatabaseUtil {// 接收一个对象参数并保存public static void save(ThisKeywordExamples obj) {System.out.println("保存对象到数据库:" + obj);}
}
this
关键字的主要用法说明:
-
区分实例变量和局部变量
当方法参数或局部变量与类的实例变量同名时,使用this.变量名
表示实例变量,避免命名冲突。
例如在构造方法和setSalary
方法中,this.name
明确指向类的实例变量。 -
调用当前类的其他构造方法
通过this(参数列表)
可以在一个构造方法中调用另一个构造方法,减少代码重复。
注意:这种调用必须放在构造方法的第一行。 -
调用当前类的其他方法
使用this.方法名()
可以调用当前类的其他方法,增强代码可读性(即使省略this
也能正常工作,但显式写出更清晰)。 -
作为方法返回值
在方法中返回this
可以返回当前对象的引用,从而实现方法的链式调用(如示例中的updateAge(26).printBasicInfo()
)。 -
作为参数传递
this
可以代表当前对象,作为参数传递给其他方法(如示例中传递给DatabaseUtil.save()
方法)。