Java静态方法变量在编译期间解析,在运行时加载?

时间:2012-10-16 22:37:51

标签: java time static compilation

我正在阅读Java中的静态方法和变量,我发现了以下两篇关于堆栈溢出的文章。

Are static methods in Java always resolved at compile time? 这就是说,静态方法在编译时得到解决。

when is static variable loaded in java, runtime or compile time?时间或编译时间

这就是说,静态方法是在编译时加载的。

编译器在解析它们时(例如在编译时)不应该加载静态变量/方法吗? 令人困惑!有人可以澄清一下吗?

1 个答案:

答案 0 :(得分:6)

在我看来,您对“解决”和“加载”这两个术语的含义感到困惑。

解析方法/变量意味着确切地确定调用哪个方法/变量。例如,方法在运行时完成,这导致子类覆盖超类的方法(多态)的能力。但是静态方法无法覆盖并在编译时解析。

加载变量意味着实际将值存入​​内存。当然,这只能在运行时发生。具体来说,在加载类本身时会加载一个静态变量。