我知道在Java中,“this”作为引用。我们只能在类成员内部使用它。
我的问题是... 因为它用于类的成员,这意味着它必须是实例变量或参数之一。
假设它是方法的参数,但它在块中起作用。块不包含任何参数..你能解释一下它是什么吗?在Java中它是如何定义的?JVM如何使用它?
我知道在Java中,“this”作为引用。我们只能在类成员内部使用它。
我的问题是... 因为它用于类的成员,这意味着它必须是实例变量或参数之一。
假设它是方法的参数,但它在块中起作用。块不包含任何参数..你能解释一下它是什么吗?在Java中它是如何定义的?JVM如何使用它?
this
既不是局部变量也不是参数。从句法上讲,它是一个关键字。从语义上讲,它是一种显式地表示“当前对象”的方式;参见JLS 15.8.3。例如:
this.<attributeName>
明确引用当前对象的实例级属性。<methodName>(this)
调用一个方法,并将对当前对象的引用作为显式参数传递。this
关键字在Java中有其他用途,不完全意味着“当前对象”:
this(<optArgumentList>)
作为构造函数中的第一条语句链接到同一类中的另一个构造函数;JLS 8.8.7。<className>.this
在内部类中引用当前对象的封闭类的实例;JLS 15.8.4。实例方法在实际实例、实际对象的上下文中被调用。
class
的实例方法中,this
(在大多数情况下)指的是这个对象。这是一个相对的引用:当同一个方法在另一个对象上调用时,在该方法执行期间,this
现在指的是第二个对象。
为了完整起见,应该提到 Java 还有所谓 "qualified" this
,它可以用来引用内部 class
的 enclosing 对象,而不是调用该方法的对象。
在构造函数中它还可以出现,但有一些限制,它可以调用同一类的另一个构造函数。super
也可以这样使用。
this
this
表示一个值,该值是对调用实例方法的对象或正在构造的对象的引用。this
this
来引用。this
(可能带有显式的类型参数前缀)开头。它们用于调用同一类的替代构造函数。class Person
{
string name;
int age;
void print(){ System.out.writeln(name+" "+age); }
}
以下是类似于伪代码的工作方式:
class Person
{
string name;
int age;
}
void print(Person this)
{
System.out.writeln(this.name+" "+this.age);
}
一种思考方式是将其视为实例方法和构造函数的隐式参数。在构造函数的情况下,构造函数的工作是设置“this”,而在实例方法的情况下,它们可以根据需要操作“this”。
请注意,Java还具有一些语法糖,允许您隐含地引用“this”的字段和方法,而无需指定this.foo
。
this
将会给你一个对实际实例的引用。在构造函数中非常常见,例如:
class Dog {
String name;
public Dog(String name) {
this.name = name;
}
}
name
,因此 this.name
是实例变量,而 name
是构造函数中的参数。 - Truong Ha你可以把'this'想象成指代自己。就像我一样,[attribute]可以访问自身的属性或方法。