Java中this的解析及用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中this的解析及用法相关的知识,希望对你有一定的参考价值。

Java的内存可以分为栈区,堆区与方法区。

栈区:为自动连续分配的空间,用来存放程序中定义的局部变量 。

堆区: 为不连续的内存空间,用来存放new 关键字分配出来的对象--对象实例数据。

方法区:方法区用来存放类的代码信息,static变量以及常量池-- 对象类型数据等。

 

技术分享

 

如上图,实例方法存放在对象实例数据中,当我们定义一个对象并使用该对象调用它的一个实例方法时,该方法的指针需要去对象类型数据中调用方法的代码,

但是实例方法中会涉及到该调用对象中的其他属性的读写,因此在调用该部分代码时虚拟机会隐含的将主调对象的地址传递给被调的方法,这个被隐式传递的地址

就是this 指针。

这样若实例方法中使用了this指针来调用对象的属性(如 a),就能明确到this.a究竟是哪一个对象的a,因为该类型的对象可能不止一个。

 

此外this指针还可以在构造方法的第一条语句做 this(参数); 的调用,这样即实现了构造方法调用构造方法.但是这种用法要求被调构造方法在主调构造方法的第一条

语句。 

 

以上是关于Java中this的解析及用法的主要内容,如果未能解决你的问题,请参考以下文章

java中 this() 和super()的作用及用法

VB中各个关键字的意思及用法

Java学习笔记之二十二解析接口在Java继承中的用法及实例分析

Java学习笔记之二十二解析接口在Java继承中的用法及实例分析

JAVA关键字具体的作用和用法

在Java中super和this的区别