为什么我的Java类不使用";这是什么;?

为什么我的Java类不使用";这是什么;?,java,Java,在我的Java类中,我创建了一些属性和方法。然而,在我调用的其中一个方法中,该类的一个属性既可以使用,也可以不使用属性前面的“this.”。如果没有必要,我想知道“这”的目的是什么 ^^工作^^ public String getName() { return this.name; } ^^使用这个是引用类属性的更直接的方法。您(正确地)发现,在这种情况下,它是不必要的。下面是一个更有用的示例: public String getName() { ret

在我的Java类中,我创建了一些属性和方法。然而,在我调用的其中一个方法中,该类的一个属性既可以使用,也可以不使用属性前面的“this.”。如果没有必要,我想知道“这”的目的是什么

^^工作^^

public String getName() {
        return this.name;
    }

^^使用
这个
是引用类属性的更直接的方法。您(正确地)发现,在这种情况下,它是不必要的。下面是一个更有用的示例:

public String getName() {
        return this.name;
    }
公共字符串getName(字符串名称){
返回this.name+“-”+name;
}

这将返回属性名,后跟连字符,后跟传递到参数中的名称。通过使用
this
关键字,您可以准确地指定所引用的变量,即使它们具有相同的名称。

Java中的关键字“this”是引用当前对象的引用变量。可用于引用当前类实例变量

在您的情况下,如果您只写名称,则它可以引用当前方法变量或参数。如果您写此名称,则它将特别指向当前类实例变量。
主要
表示为当前类的实例。

来自:

“使用this关键字的最常见原因是字段 被方法或构造函数参数隐藏。“

使用“this”不是强制性的。但引用对象的字段而不是方法或变量的参数是有用的。见:

public class Person {

  private String name = "John Smith";

  public String getName() {
        return name; // no need for keyword "this"
    }

  public String getFalseName() {
        String name = "Bill Doe"; // this.name is shadowed
        return name; // will return "Bill Doe" since keyword "this" is not used
  }

  public String getTrueName() {
        String name = "Bill Doe"; // this.name is shadowed
        return this.name; // Will return "John Smith";
  }

  public void setName( String name ){ // name is a parameter, this.name is shadowed now
    this.name = name; // this.name is correctly assigned
  }

}

的目的:它指的正是该方法所属的对象


这是没有意义的吗?否。否则,如何将self对象作为另一个方法的参数传递?例如,调用像
foo(this)

这样的函数是很常见的。“this”关键字的主要目的是使用当前类的对象引用调用实例方法/变量,而不创建对象

请按照下面的代码,你会得到一点关于这个关键字的澄清

请执行以下代码并观察差异

public class Test {

private String name;

public String getName() {
    return name;
}

public String getName2() {
    return this.name;
}

public void setName(String name) {
    //here I am asigning method parameter value to class level variable
    this.name = name;
}

public void setName2(String name) {
    //here  Iam not using this keyword 
    //Here There is no use of assign name = name 
    name = name;
}

public static void main(String[] args) {

    Test test = new Test();

    test.setName("test 123");

    System.out.println(test.getName());
    System.out.println(test.getName2());

    test.setName2("test 456");

    System.out.println(test.getName());
    System.out.println(test.getName2());

    test.setName("test 789");

    System.out.println(test.getName());
    System.out.println(test.getName2());
}

}

这是否回答了您的问题?