具有静态和最终限定符的奇怪Java行为

具有静态和最终限定符的奇怪Java行为,第1张

具有静态和最终限定符的奇怪Java行为

这些是您运行程序时采取的步骤:

  1. main
    可以运行之前,
    Test
    必须按外观顺序通过运行静态初始化程序来初始化该类。
  2. 要初始化该
    me
    字段,请开始执行
    new Test()
  3. 打印的值
    I
    。由于字段类型为
    Integer
    ,因此看起来像编译时常量
    4
    的值成为计算值(
    Integer.valueOf(4)
    )。该字段的初始化程序尚未运行,正在打印初始值
    null
  4. 打印的值
    S
    。由于已使用编译时常数对其进行了初始化,因此将该值烘焙到引用站点print中
    abc
  5. new Test()
    完成,现在
    I
    执行初始化程序。

课程:如果您依赖急切初始化的静态单例,请将单例声明放置为最后一个静态字段声明,或者诉诸于在所有其他静态声明之后出现的静态初始化程序块。这将使该类看起来完全初始化为单例的构造代码。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5431057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存