创建一个对象的过程(new)

https://blog.csdn.net/qq_27495157/article/details/81262921

  1. 首先会有JVM去内存中的 方法区 查找该类的class信息,如果有直接拿来用,如果没有,去磁盘中查找.class文件,并由类加载器(ClassLoader)进行加载到方法区。

  2. 加载时遇到静态成员变量,加载到方法区的静态区域,非静态成员变量加载到非静态区域。然后对静态变量进行默认初始化和显式初始化。静态代码块会在加载时执行,非静态代码块在创建实例时执行。先加载父类,再加载子类。

  3. 静态方法和非静态方法在调用时才会执行。

  4. new一个对象时,在堆内存中开辟一块空间,给开辟的空间分配一个地址,把非静态成员变量加载到开辟的空间下,进行默认初始化。

  5. 调用构造函数,入栈执行,先执行隐式三步:调用super函数,对非静态成员显式初始化,执行构造代码块。再执行构造函数的代码。

  6. 构造函数弹栈,把空间分配的地址赋给引用对象。

你可能感兴趣的:(创建一个对象的过程(new))