2

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

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

java,运行时或编译时何时加载静态变量?时间或编译时间

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

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

4

1 回答 1

8

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

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

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

于 2012-10-16T22:48:04.413 回答