关键字'this'显示为变量名



我是Java编码的初学者,我很难理解以下情况。下面是 eclipse 的屏幕截图,当时我正在尝试调试我的程序。我不明白为什么右上角的变量部分将this显示为变量名,而this的值显示为Test(class name)。我一直认为这是一个指针而不是一个变量。此外,尚未创建用于类测试的对象。那么,它指的是什么?如果您看到屏幕截图,则该程序中未使用。在调试时,它仍然显示为变量名

日食截图

谁能帮我解决这个问题?

来自 JLS 的第 15.8.3 节:

用作主表达式时,关键字 this 表示一个值,该值是对为其调用实例方法或默认方法 (§15.12) 的对象或正在构造的对象的引用。

所以基本上你可以把它看作是一个只读变量。你可以用它做同样的事情,就像你可以做大多数其他变量一样。

在屏幕截图中,执行位于构造函数的开头 - 因此this引用当前正在初始化的对象。

this表示当前上下文中的当前对象。在任何给定的实例上下文(方法)中,这表示调用此方法的对象。

请注意,对于实例方法的任何调用,对象 ( this ) 都是隐式传递的。因此,您可以在变量部分中看到this的实例。

this不完全是一个引用(从技术上讲,它实际上指向当前对象)。

指针是一个变量。 它是一个变量,包含被引用对象的内存地址。

在调试窗口中,注意"(ID=18)"。 这是单个对象的内部 ID。 因此,您的对象已被实例化,并且 this 关键字当前引用 ID 为 18 的该对象的实例。

如果调试器位于此文件上,则对象已分配。 如果我没记错我的 Eclipse 调试,看起来构造函数正在被调用。 这意味着所有静态项都已评估,并且您的对象已准备好执行其构造函数 - 这意味着它已被分配。

最新更新