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