不重复,这是一个语义问题吗?
哥伦比亚大学的一位教授说,关键字this
指向当前的class
(See Page 21)。我99%肯定这不正确。
我想说它传递给class instance
或object
。是否有一种首选的方式来说明this
简明扼要的内容。
谢谢,我只是希望我的笔记准确无误。
答案 0 :(得分:7)
来自Oracle docs:
关键字 this 只能在实例方法的正文中使用, 实例初始化器或构造函数,或者在初始化器中 类的实例变量。如果它出现在其他任何地方,a 发生编译时错误。
...
当用作主表达式时,关键字this表示值 这是对实例方法所针对的对象的引用 调用(§15.12),或者被构造的对象。
来自wiki:
:此强>
用于表示它出现的类的实例。这个 可用于访问类成员和作为当前的引用 实例。 此关键字也用于转发来自一个的呼叫 类中的构造函数到同一个类中的另一个构造函数。
答案 1 :(得分:1)
this
是指current object
。
E.g
public class MyThisTest {
private int a;
public MyThisTest() {
this(42); // calls the other constructor
}
public MyThisTest(int a) {
this.a = a; // assigns the value of the parameter a to the field of the same name
}
public void frobnicate() {
int a = 1;
System.out.println(a); // refers to the local variable a
System.out.println(this.a); // refers to the field a
System.out.println(this); // refers to this entire object
}
public String toString() {
return "MyThisTest a=" + a; // refers to the field a
}
}
自我解释输出:
1
42
MyThisTest a=42
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以将其视为“当前班级”。但我喜欢将它视为对使用“this”的对象实例的引用。
因此,如果您有A类并且创建了两个实例A1和A2,当您在A2中执行的方法调用中引用“this”时,“this”指的是实例A2,而不是A类。
清除泥土?
答案 4 :(得分:0)
this
肯定是指当前的实例