Java 中的 this 关键字:什么是以及如何与示例一起使用
Java 中的这个关键字是什么?
Java 中的这个关键字 是一个引用变量,它引用方法或构造函数的当前对象。在Java中使用this关键字的主要目的是为了消除类属性和同名参数之间的混淆。
以下是 Java 中“this”关键字的各种用法:
- 可用于引用当前类的实例变量
- 可用于调用或初始化当前类的构造函数
- 可以在方法调用中作为参数传递
- 可以在构造函数调用中作为参数传递
- 可用于返回当前类实例
如果视频无法访问,请单击此处
通过示例了解“this”关键字。
<中心>
<图>
- 类 :类帐户
- 实例变量 :a 和 b
- 方法组数据 :设置 a 和 b 的值。
- 方法显示数据 :显示 a 和 b 的值。
- 主要方法: 我们为 Account 类创建一个对象并调用方法设置数据和显示数据。
让我们编译并运行代码
我们对 A 和 B 的预期输出应该分别初始化为值 2 和 3。
但是值是0,为什么?让我们调查一下。
在 Set data 方法中,参数被声明为 a 和 b,而实例变量也被命名为 a 和 b。
在执行过程中,编译器会感到困惑。赋值运算符左侧的“a”是实例变量还是局部变量。因此,在调用方法集数据时,它不会设置‘a’的值。
解决方法是“this”关键字
使用 Java this 关键字附加“a”和“b”,后跟点 (.) 运算符。
在代码执行期间,当对象调用方法“setdata”时。关键字“this”被对象处理程序“obj”替换。 (见下图)。
所以现在编译器知道了,
- 左侧的“a”是一个实例变量。
- 而右侧的“a”是一个局部变量
变量已正确初始化,并显示了预期的输出。
假设你足够聪明,可以为实例变量和方法参数选择不同的名称。
但是这一次,您创建了该类的两个对象,每个对象都调用 set data 方法。
编译器将如何确定它是否应该在对象 1 或对象 2 的实例变量上工作。
好吧,编译器隐式附加 带有“this”关键字的实例变量(下图)。
这样当对象 1 调用 set data 方法时,实例变量会被其引用变量附加。
在对象 2 调用 set data 方法时,对象 2 的一个实例变量被修改了。
这个过程由编译器自己负责。除非出现我们示例中的特殊情况,否则您不必显式附加“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 中的关键字是一个引用变量,它引用当前对象。
- 在 Java 中 this 关键字的用途之一是引用当前类的实例变量
- 可用于调用或初始化当前类的构造函数
- 可以在方法调用中作为参数传递
- Java 中的 this 指针可以在构造函数调用中作为参数传递
- Java 中的 this 运算符可用于返回当前类实例
- Java 中的 this 是对当前对象的引用,该对象的方法正在被调用。
- 您可以使用“this”关键字来避免实例/对象的方法/构造函数中的命名冲突。
java
- Java this 关键字
- 什么是 C# 中的接口与示例
- C# 队列示例:什么是 C# 队列以及如何使用?
- C 库中的 free() 函数:如何使用?通过示例学习
- Java Hello World:如何通过示例编写您的第一个 Java 程序
- Java OOP 中的封装与示例
- Java 中的 String Length() 方法:如何通过示例查找
- Java String charAt() 方法及示例
- Java String compareTo() 方法:如何与示例一起使用
- Java String endsWith() 方法及示例
- Java BufferedReader:如何通过示例在 Java 中读取文件
- Java中的插入排序算法及程序示例