我们都知道,创建对象是由new关键字调用构造方法返回类实例。
例如:Animal dog = new Animal();
那么这句话到底是做了哪些事情呢?其实呢就是讲对象的初始化过程。
- new用到了Animal.class,所以会先找到Animal.class文件,并加载到内存中(用到类中的内容类就会被加载)
- 执行该对象的static代码块(静态初始块).(如果有的话,就给Animal.class类进行初始化)
- 在堆内存中开辟空间,分配内存地址
- 在堆内存中建立对象特有属性,并进行默认初始化。
- 对属性进行显示初始化(声明成员属性并赋值)
- 执行普通初始快
- 执行构造函数
- 将内存地址赋值给栈内存中dog变量
如下图: