在Java中,类的初始化过程遵循以下步骤:
加载
由类加载器执行,查找字节码文件,通过`CLASSPATH`环境变量或系统类路径查找,创建`Class`对象。
链接
验证类的字节码文件,为静态变量分配存储空间,并解析类中对其他类的引用。
初始化
如果类有超类,则先对超类进行初始化。
执行静态初始化器和静态初始化块。
静态变量和静态代码块从上到下顺序执行,并且只执行一次。
实例化
创建类的实例时,首先执行父类的构造函数,然后执行当前类的构造函数。
非静态变量和实例代码块按照构造函数中定义的顺序执行。
构造函数
构造函数用于初始化类的实例变量和执行实例相关代码。
构造函数可以重载,每个构造函数对应一个方法调用。
类外初始化
所有类`static`数据成员必须在这里初始化,除了`static const int`数据成员,它可以在声明处或类外初始化。
类中声明时直接赋值
`static const int`数据成员可以在这里直接赋值。
子类初始化
子类实例化时,首先执行父类的静态初始化块和构造函数,然后执行子类的静态初始化块和构造函数。
以上步骤确保了类的正确初始化和实例的正确创建。需要注意的是,静态变量和静态代码块在类加载时执行,而实例变量和构造函数在创建对象时执行