Java 中的 this 关键字
关键字 this
是 Java 中引用当前对象的引用变量。
Java 中 this
关键字的各种用法如下:
- 它可用于引用当前类的实例变量
- 它可用于调用或启动当前类构造函数
- 它可以作为方法调用中的参数传递
- 它可以在构造函数调用中作为参数传递
- 它可用于返回当前的类实例
this
关键字举例
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 obi = new Account ;
obj.setData(2, 3);
obj.ShowData();
}
}
class
:名为Account
的类- 实例变量:a 和 b
setData
方法:设置 a 和 b 的值。showData
方法:显示 a 和 b 的值。main
方法:我们为 Account 类创建一个对象,并调用方法设置数据和显示数据。
让我们编译并运行代码,
C:\Tastons> java Account
Value of A = 0
Value of B = 0
我们对 a 和 b 的预期输出应分别初始化为值 2 和 3,但输出值是 0,为什么?我们来看一下。
在方法 setData()
中,参数声明为 a 和 b,而实例变量也命名为 a 和 b。
在执行期间,编译器会困惑,比如分配的运算符左侧的 a
是实例变量还是局部变量呢?因此,在调用方法集数据时,它不会设置 a
的值。
解决方案是 this
关键字,使用 this
关键字后跟 .
运算符然后再加 a
和 b
。
public void setData(int a , int b){
this.a = a;
this.b = b;
}
在代码执行期间,当对象调用方法 setdata
时。关键字 this
由对象处理程序 obj
替换。
所以现在编译器知道,
- 左侧的
a
是实例变量。 - 而右侧的
a
是局部变量
现在变量已正确初始化,并能显示预期输出。
C:\Tastons> java Account
Value of A = 2
Value of B = 3
假设你足够聪明,可以为实例变量和方法参数选择不同的名称。
class Account {
int a;
int b;
public void setData(int c , int d){
a = c;
b = d;
}
....
但是这一次,你创建了类的两个对象,每个对象都调用 setData
方法。
编译器将如何确定它是否应该在 object1
或 object2
的实例变量上工作。
public void setData(int c , int d){
a = c;
b = d;
}
public static void main(string args[]) {
Account object1 = new Account();
object1.setData(2, 3);
Account object2 = new Account();
object2.setData(4, 3);
}
编译器隐式地将实例变量附加到 this
关键字(下图)。
这样当对象 1 调用 setData
方法时,实例变量被其引用变量追加。
object1.a = c;
object1.b = d;
当对象 2 调用 setData
方法时,对象 2 的实例变量被修改。
object2.a = c;
object2.b = d;
编译器本身会处理此过程。除非在我们的示例中存在异常情况,否则你不必显式地附加 this
关键字。
示例: 学习来使用 this
关键字
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();
}
}
步骤 1 a
和 b
的值显示为零?要更正这个错误,请使用 this
关键字添加到程序。
this.a =a;
this.b =b;
步骤 2: 编译和运行代码,此时,a 和 b 的值分别设置为 2 和 3。
摘要
- Java 中的
this
关键字是一个引用当前对象的引用变量。 - 它可用于引用当前类实例变量
- 它可用于调用或启动当前类构造函数
- 它可以作为方法调用中的参数传递
- 它可以在构造函数调用中作为参数传递
- 它可用于返回当前的类实例
this
是方法正在被调用的当前对象的引用,。- 你可以使用
this
关键字来避免实例/对象的方法/构造函数中的命名冲突。