Java的内存可以分为栈区,堆区与方法区。
栈区:为自动连续分配的空间,用来存放程序中定义的局部变量 。
堆区: 为不连续的内存空间,用来存放new 关键字分配出来的对象--对象实例数据。
方法区:方法区用来存放类的代码信息,static变量以及常量池-- 对象类型数据等。
如上图,实例方法存放在对象实例数据中,当我们定义一个对象并使用该对象调用它的一个实例方法时,该方法的指针需要去对象类型数据中调用方法的代码,
但是实例方法中会涉及到该调用对象中的其他属性的读写,因此在调用该部分代码时虚拟机会隐含的将主调对象的地址传递给被调的方法,这个被隐式传递的地址
就是this 指针。
这样若实例方法中使用了this指针来调用对象的属性(如 a),就能明确到this.a究竟是哪一个对象的a,因为该类型的对象可能不止一个。
此外this指针还可以在构造方法的第一条语句做 this(参数); 的调用,这样即实现了构造方法调用构造方法.但是这种用法要求被调构造方法在主调构造方法的第一条
语句。
时间: 2024-11-09 04:23:14