public class MyThisTest {
private int a;
public MyThisTest(int a) {
this.a = a;
}
您正在使用 this 引用成员变量 a . 使用 this 是因为根据参数 a 变量。如果你不使用 this 哪个变量将被赋值?与参数相同,因此它不会生效,因为它是“自动分配”值。 文字 this 确保引用成员变量。这主要用于构造函数和getter/setter,因为参数名应该与成员变量名相同,以便处理歧义 this 已使用。 第二个代码
public class MyThisTest {
private int a;
public MyThisTest(int b) {
a = b;
}
public class A {
private int a;
public A(int b) {
a = b;
}
}
编译然后反编译你可以看到编译器的工作
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
public class A {
private int a;
public A(int b) {
this.a = b;
}
}
3条答案
按热度按时间6jjcrrmo1#
是的,两种实现都是相同的。但我强烈建议你仔细阅读,这样你以后就不会犯任何错误。这个答案详细说明了我们什么时候应该使用
this
.6ovsh4lw2#
是的,两者都一样,让我们看看原因:
第一
您正在使用
this
引用成员变量a
. 使用this
是因为根据参数a
变量。如果你不使用this
哪个变量将被赋值?与参数相同,因此它不会生效,因为它是“自动分配”值。文字
this
确保引用成员变量。这主要用于构造函数和getter/setter,因为参数名应该与成员变量名相同,以便处理歧义this
已使用。第二个代码
在构造函数中,变量之间没有歧义,所以
this
不需要,但您仍然可以使用this
而且效果很好。yqyhoc1h3#
此关键字将由编译器添加。实际上,如果你写这样的东西
编译然后反编译你可以看到编译器的工作
所以,我想说,避免这只是一些语法糖的用法。