Java类代码执行顺序
关于Java中类初始化顺序的,其中包括了静态变量(Static Variables)、静态代码块(Static Block)、实例变量(Instance Variables)、构造代码块(Construct Block)和构造函数(Constructor)。
1、静态变量
直接位于类中,与方法平级,被static修饰。随着类的加载而初始化,存储在共享区。
2、静态代码块
直接定义在类中。随着类的加载而只执行,用于初始化类。由于类只会加载一次,所以静态代码快只会被执行一次。在首次创建对象或首次访问静态成员时执行。
3、实例变量
随着对象的创建而初始化,存在堆内存中。实例变量随着对象的消失而消失.
4、构造代码块
把不同对象的共性内容,放到构造代码块中,统一初始化。对象一建立就运行,并先于构造函数。
5、构造函数
用于初始化对象(对象的属性)的函数。
6、执行顺序(同一级的按前后顺序执行)
静态变量 > 静态代码块 > 实例变量 > 构造代码块 > 构造函数
7、示例代码
public class InitializationOrderExample {
// 静态变量
static String staticVariable = "Static Variable";
// 实例变量
String instanceVariable = "Instance Variable";
// 静态代码块
static {
System.out.println(staticVariable);
System.out.println("Static Block");
}
// 构造代码块
{
System.out.println(instanceVariable);
System.out.println("Construct Block");
}
// 构造函数
public InitializationOrderExample() {
System.out.println("Constructor Called");
}
public static void main(String[] args) {
new InitializationOrderExample();
}
}
执行结果:
Static Variable
Static Block
Instance Variable
Construct Block
Constructor Called