这些是您运行程序时采取的步骤:
- 在
main
可以运行之前,Test
必须按外观顺序通过运行静态初始化程序来初始化该类。 - 要初始化该
me
字段,请开始执行new Test()
。 - 打印的值
I
。由于字段类型为Integer
,因此看起来像编译时常量4
的值成为计算值(Integer.valueOf(4)
)。该字段的初始化程序尚未运行,正在打印初始值null
。 - 打印的值
S
。由于已使用编译时常数对其进行了初始化,因此将该值烘焙到引用站点print中abc
。 new Test()
完成,现在I
执行初始化程序。
课程:如果您依赖急切初始化的静态单例,请将单例声明放置为最后一个静态字段声明,或者诉诸于在所有其他静态声明之后出现的静态初始化程序块。这将使该类看起来完全初始化为单例的构造代码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)