有"this"和没有的代码之间的区别

  • 本文关键字:区别 代码 之间 this java
  • 更新时间 :
  • 英文 :


我是Java编程的初学者,在理解一些概念方面遇到了一些问题。我想知道两种实现是否相同:

代码1

public class MyThisTest {
private int a;
public MyThisTest(int a) {
this.a = a;
}

代码2

public class MyThisTest {
private int a;
public MyThisTest(int b) {
a = b;
}

是的,两者都一样,让我们看看为什么:

第一个

public class MyThisTest {
private int a;
public MyThisTest(int a) {
this.a = a;
}

您正在使用this引用成员变量a。使用this是因为通过参数存在另一个a变量。如果不使用this,将为哪个变量分配值?与参数相同,因此它不会生效,因为它是"自动分配"值。

Wordthis确保引用成员变量。这主要用于构造函数和getter/setter,因为参数名称应该与成员变量名称相同,所以为了处理歧义,使用了this

第二个代码

public class MyThisTest {
private int a;
public MyThisTest(int b) {
a = b;
}

在构造函数中,变量之间没有歧义,所以不需要this,但您仍然可以使用this,它可以完美地工作。

是的,这两个实现是相同的。但我强烈建议你详细阅读,这样你以后就不会犯任何错误。这个答案详细介绍了我们应该在什么时候使用this

这个关键字将由编译器添加。事实上,如果你写这样的

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;
}
}

所以,我想说,避免这只是使用了一些语法糖。

最新更新