“this”操作符在java中是如何工作的?
我是java的初学者。你能告诉我这个操作符是如何将值传递给方法中的实例变量的吗 例如:“this”操作符在java中是如何工作的?,java,Java,我是java的初学者。你能告诉我这个操作符是如何将值传递给方法中的实例变量的吗 例如: public class Cricketer { private String name; public void setName(String name){ this.name = name; } } 我想知道它将如何处理。有人能解释清楚吗。这是编译器作为隐藏参数悄悄传递的,您可以使用它引用当前对象。非静态方法会自动将此消息传递给它们。您的方法setName不是静
public class Cricketer {
private String name;
public void setName(String name){
this.name = name;
}
}
我想知道它将如何处理。有人能解释清楚吗。这是编译器作为隐藏参数悄悄传递的,您可以使用它引用当前对象。非静态方法会自动将此消息传递给它们。您的方法setName不是静态的,因此这意味着您需要调用Cricketer的实例
Cricketer c = new Cricketer();
c.setName("xyz");
因此,您的方法setName可以理解为
c.name = "xyz";
c是这样的。如果在Cricketer中调用实例方法而不是静态方法,则需要为其指定一个对象:
Cricketer x = new Cricketer(...);
x.someMethod();
在someMethod的主体中,您可以使用它来表示调用该方法的对象,在本例中是x
类似地,在构造函数的主体中,这意味着我们刚刚创建的对象
在这里,在setName内部,this.name表示我们称之为setName的对象的name成员。通常,在对象的方法中,您可以只说name而不是this.name;这里的问题是,代码使用名称表示不同的含义,即传递给setName的字符串,并且该含义在setName正文中具有优先级。请注意,通常不需要使用该名称访问当前对象中的字段,但是在上面的代码中还有一个名为name的参数,它隐藏了对name的非限定使用,以访问对象中的字段。使用this.name允许访问字段,尽管参数隐藏了它。这是指向当前对象的指针。因此,this.name表示当前对象中的字段名。