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

时间:2016-02-08 13:05:48

标签: java eclipse

我是java编码的初学者,我很难理解下面的场景。下面是eclipse的屏幕截图,而我正在尝试调试我的程序。我无法理解为什么右上角的变量部分将youtubePlayer.setOnFullScreenListener()显示为变量名称,将this的值显示为this。我一直认为这是一个指针,而不是一个变量。而且,尚未创建用于类测试的对象。那么,它引用了什么?如果您看到屏幕截图,则不会在程序中使用。在调试时,它显示为变量名称

Eclipse screenshot

任何人都可以帮我这个吗?

3 个答案:

答案 0 :(得分:5)

来自section 15.8.3 of the JLS

  

当用作主表达式时,关键字this表示一个值,该值是对调用实例方法或默认方法的对象(第15.12节)的引用,或者是对正在构造的对象的引用。 / p>

因此,基本上你可以将它视为只读变量。您可以使用它做同样的事情,就像大多数其他变量一样。

在你的截屏中,你的执行是在构造函数的开头 - 所以this引用当前正在初始化的对象。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

在调试窗口中,记下"(ID = 18)"。这是单个对象的内部ID。所以你的对象已被实例化,而this关键字当前是指ID为18的那个对象的实例。

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