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

标签 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?时间或编译时间

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

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

最佳答案

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

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

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

关于Java静态方法变量在编译时解析,在运行时加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12924533/

相关文章:

c - 共享库中的静态变量

android - 我的应用程序的键盘永久可见

java - Gradle Spring Boot 插件在 Linux 上损坏

java - 如何将手机中的联系人导入到 Gmail 帐户

android - 将日期/时间(以毫秒为单位)格式化为 Android 中的本地字符串

javascript - JavaScript 将日期时间四舍五入到最后 10 分钟

c++ - 有没有办法以毫秒为单位计算程序的时间复杂度?

c++ - 错误消息 "undefined reference to ' 列表::a'"

java - 从 Junit 中的 Jax-Rs Response 类获取 header 值、状态代码等

java - 带图标的主屏幕快捷方式