看到Java编程思想和深入Java虚拟机都有介绍对象的创建过程,在这里结合两本书的内容总结一下。
假设一个Book类,当我们通过new关键字进行对象创建Book mBook = new Book()的时候:
1、虚拟机JVM首先会在常量池中检查是否有Book类的符号引用,如果没有则需要查找类的路径,进行Book.class类文件的定位。
2、类加载器对Book.class进行加载。并进行静态变量、静态代码块、静态方法的初始化(静态成员只会在类加载时初始化一次)。
3、在堆(对象分配到堆上)上为Book对象分配足够的空间。
4、对分配给对象的内存空间进行清零,也就会自动为Book对象的基本类型初始化为默认值(数值为0,布尔值为false),对象引用为null.
5、进行book对象成员变量的自定义初始化,比如:private double price = 92.2;price成员变量先被初始化为默认值0.0,然后才执行我们自定义的初始化92.2。
6、最后执行构造器 Book();