Person P = new Person();
这是简单的创建对象的一个过程,那么,在这个过程中,具体发生了什么?
我们来简单探究一下这个过程。
第一步: new Person(),使用到了Person.class 文件,JVM会找到Person.class文件,并将其加载到内存中。
第二步:类加载之后,会执行类中static代码块,如果有的话,给这个类进行初始化。
第三步:在堆内存中开辟空间,并分配内配内存地址。
第四步:在堆内存中建立对象的特有属性,并进行默认初始化。
第五步:对属性进行显性初始化
第六步:对属性进行构造代码块初始化
第七步:对属性进行对象的构造函数初始化
第八步:将内存中的地址赋给栈内存中的P 变量
如果这个类中有静态变量。静态变量不在堆中,而是方法区中。