我们知道当使用new关键字创建一个对象的时候,会调用相应的构造函数对该对象进行初始化,那么这个过程中到底都还有什么事情呢?
先看一段代码:
当执行语句:
Student stu = new Student("zhangsan",17);
执行该语句的时候在内存中程序都做了什么事情,让我们一一列举出来:
1、因为new用到了Student.class,所以会先找到Student.class文件并加载到内存中。
2、如果有的话,执行该类中的static静态代码块,给Student.class类进行初始化。
3、在堆内存中开辟空间,分配内存地址。
4、在堆内存中建立对象的特有属性,并进行默认初始化。
5、对属性进行显示初始化。
6、对对象进行构造代码块初始化。
7、对对象进行相应的构造函数初始化。
8、将内存地址赋给栈内存中的stu变量。