Java - .class 文件中未初始化的静态变量

Java - uninitialized static variable in .class file

在c中,未初始化的静态变量在可执行文件中不带space。

Java呢? static variable 是否在 .class 文件中使用 space?

提示:问题是关于磁盘space,而不是内存。

是的,它们会占用内存。 java 中的所有变量都将分配给它们默认值,即使您没有对其进行初始化也是如此。所以,

int i;

在这种情况下会占用内存。这是一些进一步的阅读:Do uninitialized primitive instance variables use memory?

所有字段在类文件中都有一个条目,给出名称、类型、标志(final、public、volatile、static 等)和其他数据。

想一想,应该是这样吧。 Java 不是 C,其中变量只是 bss 或其他地方的一个位置。您有反射和运行时类型检查,因此必须维护所有这些信息。

如果字段被初始化,类文件中将有额外的数据来进行初始化(ConstantValue 属性或方法中的字节码)。但是,即使是未初始化的字段也必须在类文件中有字段条目。