创建对象时,程序主要进行了以下步骤:
类加载
将类名下的字节码文件加载进虚拟机(VM),并存储在方法区,转换成`java.lang.Class`对象实例。
验证类文件的字节流是否符合虚拟机要求。
准备类对象的成员变量分配内存并设置初始值。
解析常量池中的符号引用为直接引用。
初始化类,包括执行静态代码块和静态变量的赋值。
内存分配
在堆内存中开辟空间,分配对象的内存地址。
对象初始化
对象的属性进行默认初始化,例如数值类型的成员变量会被初始化为0或null,引用类型的成员变量会被初始化为null。
显示初始化,即对属性进行显式初始化,如通过构造函数或初始化块进行赋值。
调用构造函数,执行对象的初始化逻辑。
返回对象引用
将对象在堆中的地址值赋给引用变量,完成对象的创建。
总结起来,创建对象的过程包括类加载、内存分配、对象初始化和返回对象引用等步骤。这些步骤确保了对象在程序中的正确存在和初始化,使其可以用于后续的操作和方法调用。