Java 中 this 关键字的用法

2025 年 9 月 4 日 | 阅读 6 分钟

在 Java 中,this 关键字是面向对象编程中最常用的关键字之一。 此变量作为对类中使用的当前对象的引用。当调用对象的构造函数或方法时,对象由此关键字表示。它能够消除歧义,提高代码的可读性,并允许构造函数链式调用或对象跨函数传递。

this 关键字的用法

以下是 Java 中使用“this”关键字的几种方式,如下所示:

  1. 引用当前类的实例变量
  2. 调用当前类的方法
  3. 调用当前类的构造函数(构造函数链式调用)
  4. 将当前对象作为参数传递
  5. 返回当前类的实例

1. 引用当前类的实例变量

当局部变量的名称与实例变量(例如方法参数)的名称相同时,Java 会优先处理局部变量。在某些情况下,这有助于明确表明我们指的是类的实例变量。

示例

编译并运行

输出

Main Name: Aarav
Main Age: 21
Main Name: Meera
Main Age: 19

2. 调用当前类的方法

可以使用此关键字从同一类中调用方法。尽管可以直接调用方法,但使用此关键字可以清楚地表明该方法是当前对象的一部分。

示例

编译并运行

输出

Square: 25
Cube: 125

3. 调用当前类的构造函数(构造函数链式调用)

由于构造函数链式调用,一个构造函数可以调用同一类中的另一个构造函数。这是通过使用 this() 方法完成的。它有助于更清晰地初始化并有助于防止代码重复。

示例

编译并运行

输出

Name: Andrew, Age: 18, Course: Computer Science
Name: Henry, Age: 20, Course: Computer Science
Name: Lucas, Age: 22, Course: Mathematics

在这里,我们使用 this() 调用同一类中的构造函数。它最大限度地减少了代码重复,并使对象创建更加容易。

4. 将当前对象作为参数传递

将当前对象作为参数传递给另一个方法或构造函数是另一个常见的用法。当来自不同类的某个方法需要处理指定对象时,这一点特别有用。

示例

编译并运行

输出

Employee Name: James
Employee Salary: 50000.0

5. 返回当前类的实例

也可以使用此关键字返回类的当前对象。方法链式调用(在 Hibernate、Spring 和 Builder 设计模式等框架中越来越常见的方法)经常利用此功能。

示例

编译并运行

输出

Product: Laptop, Price: 75000.0

结论

Java 的 this 关键字是一个强大且适应性强的工具,它强化了面向对象编程的基础。它在以下方面起着至关重要的作用:

  • 消除局部变量和实例变量之间的任何混淆。
  • 显式使用当前类的方法。
  • 实现构造函数链式调用以进行有效初始化。
  • 将当前对象作为参数在类之间传递。
  • 返回当前对象以便开始方法链式调用。

通过理解和应用这些用法,开发人员可以创建更清晰、更易读、更易于维护的 Java 程序。它在大型应用程序中特别有用,在这些应用程序中,代码的模块化和清晰度至关重要。

Java this 关键字用法选择题

1. 下列哪项最能描述 Java 中的 this 关键字?

  1. 用于引用父类对象的关键字
  2. 用于引用当前类对象的关键字
  3. 用于在 Java 中导入包的关键字
  4. 仅在静态方法中使用的关键字
 

答案: B

解释: this 关键字始终引用类的当前对象。由于静态方法不属于任何特定对象,因此在静态方法中不适用。


2. 以下代码的输出是什么?

  1. 姓名:null
  2. 姓名:Arjun
  3. 编译时错误
  4. 运行时异常
 

答案: B

解释:实例变量被构造函数参数的名称隐藏了。输出是“姓名:Arjun”,因为使用 this.name = name 确保实例变量被正确分配。


3. 找出以下程序的输出。

  1. Meera - 0
  2. Meera - 20
  3. null - 20
  4. 编译时错误
 

答案: B

解释:单参数构造函数使用 this(name, 20) 调用双参数构造函数。因此,Meera 被赋予了姓名,20 被赋予了年龄。


4. 下列代码的输出是什么?

  1. Employee: null
  2. 编译时错误
  3. 运行时异常
  4. Employee: Rahul
 

答案: D

解释:Printer 类的方法接收 this 作为当前对象。鉴于初始化的姓名是“Rahul”,因此结果是“Employee: Rahul”。


5. 关于 Java 中的 this 关键字,下列哪项是不正确的?

  1. 它可以在静态方法中使用。
  2. 它可用于调用同一类中的另一个构造函数。
  3. 它可以被返回以启用方法链式调用。
  4. 它可以作为参数传递给另一个方法。
 

答案: A

解释:由于静态方法属于类而不是任何特定对象,因此不能在其中使用 this。this 可以用于其他任何原因。