静态变量和静态代码块按照在文件中的顺序依次执行,然后是静态方法

在Java中,类初始化阶段的执行顺序通常是按照以下规则进行的:

静态变量声明和静态代码块按照在类文件中的顺序依次执行。

静态变量声明(静态字段):按照在类文件中的顺序依次执行,给静态变量分配内存并初始化为默认值。
静态代码块:按照在类文件中的顺序依次执行。静态代码块中的代码会在类加载的连接阶段之后、初始化阶段之前执行。
静态方法在类初始化的后续阶段被调用。

静态方法的调用:静态方法可以在静态变量声明和静态代码块执行完毕后被调用。通常,静态方法是在类首次被主动使用时调用的,
例如在创建类的实例、访问静态字段、或者调用静态方法时。
示例:
考虑以下类的示例:

java
public class MyClass {
    static {
        System.out.println("Static block 1");
    }
    
    static int staticVariable = 10;

    static {
        System.out.println("Static block 2");
    }
    
    static void staticMethod() {
        System.out.println("Static method");
    }
    
    public static void main(String[] args) {
        System.out.println("Main method");
    }
}
按照上述规则,类 MyClass 的初始化顺序是:

首先,加载类 MyClass 的字节码文件。
进行连接阶段,包括验证、准备(给静态变量分配内存并设置默认值)和解析(将符号引用解析为直接引用)。
执行静态变量的初始化和静态代码块:
staticVariable 被初始化为默认值(0),然后被赋值为 10。
第一个静态代码块输出 "Static block 1"。
第二个静态代码块输出 "Static block 2"。
最后,静态方法 staticMethod 可以在类被主动使用时调用。
总结:
静态变量和静态代码块按照它们在类文件中的顺序依次执行。
静态方法可以在静态变量和静态代码块初始化完成后被调用,通常是在类被主动使用时触发。
这些顺序和规则确保了类在加载和初始化时的正确性和可预测性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值