“this”运算符如何在java中运行?

时间:2014-04-07 23:38:28

标签: java

我是java的初学者。你能告诉我" 这个" operator将值传递给方法中的实例变量。

示例:

public class Cricketer {
    private String name;

    public void setName(String name){
        this.name = name;
    }
}

我想知道它将如何处理。任何解释清楚。

5 个答案:

答案 0 :(得分:0)

this被编译器静默传递为隐藏参数,可用于引用当前对象。非静态方法会自动将this传递给它们。

答案 1 :(得分:0)

你的方法setName()不是静态的,所以它意味着你需要一个Cricketer实例来调用

Cricketer c = new Cricketer();
c.setName("xyz");

所以你的方法setName()可以理解为类似

c.name = "xyz";

c是“这个”。

答案 2 :(得分:0)

如果在Cricketer中调用实例方法(不是静态方法),则需要为其指定一个对象:

Cricketer x = new Cricketer(...);

x.someMethod();

someMethod的正文中,您可以使用this表示“您正在调用该方法的对象”,在本例中为x

同样,在构造函数的主体内部,this将表示“我们刚刚创建的对象”。

因此,在setName内,this.name表示“我们称之为name的对象的setName成员”。通常,在对象的方法中,您只需说name而不是this.name;这里的问题是代码使用name表示不同的含义,即您传递给setName的字符串,并且该含义在setName的正文中具有优先权。

答案 3 :(得分:0)

this指向对象的当前实例 - 如果您在类Cricketer中,当您创建该类的实例时,在类Cricketer中使用this将引用该类的实例。因此,this.field引用该类实例中的字段,并且作为参数传递的this引用该类的特定实例作为整体。

答案 4 :(得分:0)

请注意,通常您不需要使用它来访问当前对象中的字段,但在上面的代码中还有一个名为name的参数,它隐藏了{{1}的非限定使用访问对象中的字段。使用name允许访问字段,尽管参数"隐藏"它