【问题标题】:Static Block RunTime/Compile Time? [duplicate]静态块运行时间/编译时间? [复制]
【发布时间】:2014-06-11 05:45:27
【问题描述】:

我是 Java 新手,遇到了静态块。据我了解,所有静态语句(静态初始化、静态块等)在代码执行之前一起运行。

我怀疑这是在运行时还是编译时发生的?

在编译期间,代码被转换为机器语言,并在运行时执行该机器语言代码。那么,在编译过程中执行顺序是否发生了变化,并且所有静态语句都放在代码开头,以便它们在其他任何事情之前执行??

对不起,如果这看起来像一个非常简单的问题..

【问题讨论】:

  • @Raedwald,不是重复的。这个问题是关于块,而不是变量。
  • @Basilevs 没有实际区别。

标签: java static runtime compile-time non-static


【解决方案1】:

它们在运行时加载。

静态意味着:变量属于类,而不是类的实例。所以每个静态变量只有一个值,如果你有 n 个类的实例,则不是 n 个值。

【讨论】:

    【解决方案2】:

    JVM(类加载器)加载StaticClass(在代码中第一次引用它时)正在运行静态初始化块。

    更多详情请参考static block in java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 2012-10-04
      • 2010-10-25
      • 1970-01-01
      • 2013-01-23
      • 2013-05-09
      • 1970-01-01
      相关资源
      最近更新 更多