Student s = new Student();在内存中做了哪些事情?

时间:2020-11-30 21:19:44
  1. 加载Student.class文件进内存,如果该类有父类,要先加载其父类
  2. 在虚拟机栈中为引用变量s开辟空间(栈中不会默认初始化)
  3. 在堆内存中为学生对象开辟空间,进行默认初始化(0,null)
  4. [如果Student有父类]父类属性的初始化(代码块和定义属性时的赋值,哪个写在前先执行哪个);
  5. [如果Student有父类]父类的构造函数的初始化;
  6. Student属性的初始化(代码块和定义属性时的赋值,哪个写在前先执行哪个);
  7. Student的构造函数的初始化。
  8. 对象初始化完毕,返回对象的地址值,并赋值给栈中的s引用变量。