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



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

Java 中的静态方法是否总是在编译时解析?也就是说,静态方法是在编译时解析的。

何时在 Java、运行时或编译时加载静态变量? time-or-compile-time

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

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

在我看来

,您对术语"解决"和"加载"的含义感到困惑。

解析方法/变量

意味着准确决定调用哪个方法/变量。例如方法,这是在运行时完成的,这导致子类能够覆盖超类的方法(多态性)。但是,静态方法不能被覆盖,而是在编译时解析。

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

最新更新