Java - 为什么我们在构造函数中使用"this"关键字?

use*_*508 2 java

我试着环顾四周,但很难找到"这个".但我似乎无法掌握这两者之间的区别

public class x{
int y = 0;
int z = 0;

x(int y, int z){
    y = y;
    z = z
    }
}
Run Code Online (Sandbox Code Playgroud)

public class x{
int y = 0;
int z = 0;

x(int y, int z){
    this.y = y;
    this.z = z;
   }
}
Run Code Online (Sandbox Code Playgroud)

Wyz*_*a-- 12

当你写作

y = y;
z = z;
Run Code Online (Sandbox Code Playgroud)

您只是将局部变量分配给自己,而根本不触及实例变量.由于y引用了局部变量,因此必须编写this.y以引用要分配的实例变量.

final如果不想修改变量,你可以通过创建变量来帮助捕获这样的错误.例如:

x(final int y, final int z) {
    this.y = y;
    this.z = z;
}
Run Code Online (Sandbox Code Playgroud)

如果你带走this.前缀,你将得到编译错误,因为局部变量y并且z无法更改.