我知道'this'在Java中起到了参考作用.我们只能在类成员中使用它.
我要问的是...因为它在类的成员中使用,这意味着它必须是实例变量或参数.
并假设,如果它是一个方法的参数,但它是在块中工作.block不包含任何params和all ..你能解释它是什么...它在java中的定义是什么?它是如何使用By JVM的.
Ste*_*n C 32
从语言学的角度来看,this既不是局部变量也不是参数.从语法上讲,它是一个关键字.从语义上讲,它是一种表达"当前对象"的明确方式; 见JLS 15.8.3.例如:
this.<attributeName> 显式引用当前对象的实例级属性.<methodName>(this) 调用方法,将对当前对象的引用作为显式参数传递.该this关键字在Java中具有其他用途,并不完全意味着"当前对象":
this(<optArgumentList>)作为构造函数中的第一个语句链接到同一个类中的另一个构造函数; JLS 8.8.7.<className>.this内部类中的内容是指当前对象的封闭类的实例; JLS 15.8.4.从实现的角度来看,您可以将"this"引用视为每次调用实例方法时传递的隐藏或隐式参数.实际上,这或多或少是JVM的"invoke*"字节码处理对象引用的方式.将目标对象引用推送到"opstack"后跟每个参数值,然后执行"invoke ..."指令.(看这里的细节.)
实例方法在实际实例(实际对象)的上下文中调用.
在a的实例方法中class,this(在大多数上下文中)引用此对象.这是一个相对引用:当在另一个对象上调用相同的方法时,那么this在该方法的执行中现在引用该第二个对象.
为了完整起见,应该提到Java也有所谓的"qualified" this,它可以用来指代调用该方法的对象,而不是内部的封闭对象class.
在构造函数中,它也可以出现一些限制,以调用同一个类的另一个构造函数.super也可以这种方式使用.
this
this表示一个值,该值是对其调用实例方法的对象的引用,或者是对正在构造的对象的引用.this
this.this开头(可能以显式类型参数开头).它们用于调用同一类的备用构造函数.对于您所做的每个非静态方法调用,"this"被隐式传递为参数.您可以将其视为语法糖,但在机器级别,它确实是一个传递的附加参数.
class Person
{
string name;
int age;
void print(){ System.out.writeln(name+" "+age); }
}
Run Code Online (Sandbox Code Playgroud)
就像那样(伪代码):
class Person
{
string name;
int age;
}
void print(Person this)
{
System.out.writeln(this.name+" "+this.age);
}
Run Code Online (Sandbox Code Playgroud)