我知道“this”在 Java 中充当引用。我们只能在类成员内部使用它。
我要问的是...因为它在类的成员中使用,这意味着它必须是实例变量或参数。
假设,如果它是一个方法的参数,但它是在 block 中工作的。 block 不包含任何参数和所有...您能解释一下它是什么吗...它是如何在 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 。
从实现的角度来看,您可以将“this”引用视为每次调用实例方法时传递的隐藏或隐式参数。实际上,这或多或少就是 JVM 的“invoke*”字节码处理对象引用的方式。您将目标对象引用压入“opstack”,后跟每个参数值,然后执行“invoke...”指令。 (查看 here 了解详细信息。)
关于java - Java 中的 'this' : How does it work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3413184/