Java静态代码块按类加载机制执行:先父类后子类、先静态后实例、按声明顺序;在类首次主动使用时由JVM于方法中执行一次。

Java静态代码块的执行顺序由类加载机制决定,核心原则是:先父类后子类、先静态后实例、按声明顺序执行。它不依赖对象创建,而是在类首次被主动使用时,由JVM在类初始化阶段(<clinit></clinit>方法中)统一执行一次。
静态代码块属于“类初始化”阶段(Initialization),发生在以下任一情况首次发生时:
new MyClass())Class.forName("MyClass"))注意:子类引用父类的静态字段(且该字段不是编译期常量),只会触发父类初始化,不会触发子类初始化。
在同一类中,所有静态代码块和静态变量赋值语句,按它们在源码中出现的自上而下顺序合并进<clinit></clinit>方法:
立即学习“Java免费学习笔记(深入)”;
static int a = 10;)等价于一个隐式静态块static { ... } 块之间严格按书写顺序执行static int x = initX();,再有 static { y = 20; },则 initX() 先执行当子类首次被主动使用时,JVM会确保父类已初始化,因此完整顺序为:
这个链条保证了子类能安全使用已初始化完成的父类静态资源。
容易混淆的点:
System.out.println("Loading: X"),配合类加载日志验证基本上就这些。理解静态块本质是<clinit></clinit>的一部分,就能自然理清所有顺序问题。
以上就是Java静态代码块执行顺序如何确定_OOP类加载规则解析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号