Java类初始化顺序¶
类初始化阶段是类加载过程的最后一步。初始化阶段,开始执行Java代码(或者说字节码)。
初始化阶段是执行<clinit>()
方法的过程。这个方法由编译器自动收集类中的所有类变量的赋值动作和静态语句块中的语句合并产生的。编译器收集的顺序是由语句在源文件中出现的顺序决定的。
如果多个线程去同时去初始化一个类,那么只有一个线程去执行这个类的<clinit>()
方法,其他线程都会阻塞等待,直到活动线程<clinit>()
方法执行完毕。
同一个类加载器下,一个类型只会初始化一次。
顺序是:
- 基类
- 静态代码块
- 静态成员字段(按先后顺序)
- 子类(派生类)
- 静态代码块
- 静态成员变量
本站作者: rustfisher.com | rf.cs@foxmail.com
示例地址: AndroidTutorial Gitee, Tutorial Github
| 反馈问题: -> Android issues - gitee
本文链接: https://www.an.rustfisher.com/java/class/class-init-step/
|-> 本站文章最近更新
一家之言,仅当抛砖引玉。如有错漏,还请指出。下方的广告链接内容与本站无关。如果喜欢本站的内容,也可 -> 点击请作者喝咖啡 ,谢谢支持服务器。