java中this是什么时候创建的

在java中我们都知道this关键字作为本类对象的引用,那么this是什么时候创建的呢?
我们都知道在类中的构造方法中,普通成员函数里面我们都可以调用this,那么可以说明this在构造方法和普通成员函数产生之前就已经被创建了。
下面我就根据我的理解和查阅到的一些知识说明一下this是什么时候创建的。

public class Person{
   public static void main(String args[]){
        Person person=new Person();
   }
}

对于上面这样一段程序我们可以知道它是下面这样加载的。
1.JVM把Person类的Class信息从硬盘加载到内存,
2.把Person类的类信息加载到方法区
3.找到main函数在栈中为main函数创建一个栈帧,并在栈中创建一个p变量,初始值为null
4.执行到“Person person =new Person();”这条语句时JVM在堆区开辟一块对象空间用于存储new Person()创建出来的这个对象,并执行隐式初始化 int型数据初始化为零,其他类型数据默认为空(注意:此时对象已经被创建好了,而this也已经产生了)
5.执行显示初始化操作,如调用构造函数进行显式初始化(注意:在执行构造方法时对象在第4步已经产生,此时的构造方法只是对对象进行显式的初始化操作)
6.将堆区new Person();创建的对象首地址赋值给person


以上只是我的个人理解,如果有不对的地方欢迎在评论区留言指正

猜你喜欢

转载自blog.csdn.net/eE1224/article/details/82457904