Java 中的 this 关键字

Java 中的 this 关键字是什么意思?

Java 中的“this”关键字是一个引用变量,它引用当前方法或构造函数所属的对象。在Java 中使用 this 关键字的主要目的是消除类属性和同名参数之间的混淆。

Java 中 this 关键字的用法

以下是 Java 中“this”关键字的各种用法:

  • 可用于引用当前类的实例变量
  • 可用于调用或初始化当前类的构造函数
  • 可以作为参数传递给方法调用
  • 可以作为参数传递给构造函数调用
  • 可用于返回当前类的实例

如果视频无法访问,请点击此处

通过示例理解“this”关键字。

this Keyword in Java
Java this 关键字示例

  1. :class Account
  2. 实例变量:a 和 b
  3. 方法 Set data:用于设置 a 和 b 的值。
  4. 方法 Show data:用于显示 a 和 b 的值。
  5. Main 方法:在此我们为 Account 类创建一个对象,并调用 set data 和 show data 方法。

编译并运行代码

我们预期的 A 和 B 的输出值应分别初始化为 2 和 3。

但值为 0,为什么?让我们调查一下。

this Keyword in Java

在 Set data 方法中,参数声明为 a 和 b,而实例变量也命名为 a 和 b。

this Keyword in Java

执行过程中,编译器会感到困惑。“a”在赋值运算符的左侧是实例变量还是局部变量。因此,在调用 set data 方法时,它不会设置“a”的值。

this Keyword in Java

解决方案是“this”关键字

在 Java this 关键字后附加“a”和“b”以及点 (.) 运算符。

this Keyword in Java

代码执行时,当对象调用 ‘setdata’ 方法时,关键字 ‘this’ 被对象处理器“obj.”替换(见下图)。

this Keyword in Java

所以现在编译器知道:

  • 左侧的“a”是实例变量。
  • 而右侧的“a”是局部变量。

变量已正确初始化,并显示了预期的输出。

this Keyword in Java

假设您足够聪明,可以为您的实例变量和方法参数选择不同的名称。

this Keyword in Java

但这次,您创建了该类的两个对象,每个对象都调用 set data 方法。

编译器如何确定它是应该处理对象 1 的实例变量还是对象 2 的实例变量。

this Keyword in Java

好吧,编译器会自动附加实例变量(见下图)。

this Keyword in Java

这样,当对象 1 调用 set data 方法时,实例变量会附加其引用变量。

this Keyword in Java

当对象 2 调用 set data 方法时,将修改对象 2 的实例变量。

this Keyword in Java

这个过程由编译器自行处理。您不必显式附加‘this’关键字,除非出现像我们示例中那样的特殊情况。

Java 中 this 关键字的示例

示例:学习“this”关键字的用法

步骤 1)将以下代码复制到记事本中。

class Account{
int a;
int b;

 public void setData(int a ,int b){
  a = a;
  b = b;
 }
 public void showData(){
   System.out.println("Value of A ="+a);
   System.out.println("Value of B ="+b);
 }
 public static void main(String args[]){
   Account obj = new Account();
   obj.setData(2,3);
   obj.showData();
 }
}

步骤 2)保存、编译和运行代码。

步骤 3) A 和 b 的值显示为零?要纠正错误,请在第 6 行和第 7 行附加“this”关键字。

this.a =a;
this.b =b;

步骤 4)保存、编译并运行代码。这次,A 和 b 的值分别设置为 2 和 3。

摘要

  • Java 中的this关键字是引用当前对象的引用变量。
  • this 关键字在 Java 中的一个用途是引用当前类的实例变量
  • 可用于调用或初始化当前类的构造函数
  • 可以作为参数传递给方法调用
  • Java 中的 this 指针可以作为参数传递给构造函数调用
  • Java 中的 this 运算符可用于返回当前类的实例
  • Java 中的 this 是对当前对象的引用,其方法正在被调用。
  • 您可以使用“this”关键字来避免方法/构造函数中实例/对象的命名冲突。

查看我们的 Java 面试题文章:点击这里