看教学视频看到面向对象-对象初始化那块有两个疑问:(1)类加载时,是先执行静态成员,然后再执行静态代码块的吧?(2)加载的类存放在内存的哪部分呢?是存放在方法区(也叫共享区、数据区)吗?
问题背景:
public static void main(String args[]){
Person p = new Person();
}
其中Person p = new Person();的执行顺序是:首先在栈中生成一个引用变量p --->寻找并加载Person.class类,将其加载到内存的某个地方(哪里??)
--->执行静态代码块 --->在堆内存中开辟内存空间,分配内存地址 ---> 对象成员变量的初始化 --->成员变量显示初始化 --->构造代码块初始化 --->构造函数初始化 --->将对象的堆内存地址赋给栈中的引用变量p