Java:内存使用的最终关键字?

2022-09-03 03:44:28

在类中声明变量(常量)时,例如:final

private static final int MyVar = 255;

如果我有 100,000 个声明此语句的类的实例,这将需要多少内存?

它会将变量链接到类,从而具有 1*MyVar 内存使用率(忽略内部指针),还是会链接到此变量的实例并创建此变量的 100,000*MyVar 副本?

难以置信的快速响应!共识似乎是,如果一个变量既是静态的又是最终的,那么它将需要1 * MyVar。谢谢大家!


答案 1

关键字与使用的内存量无关,因为它仅意味着您无法更改变量的值。final

但是,由于变量是声明的,因此只有一个这样的变量属于该类,而不是属于特定实例。static

摘自此处

如果将字段声明为 static,则无论最终创建该类的实例(可能为零)多少个,该字段都只存在一个化身。静态字段(有时称为类变量)在类初始化时化身。未声明为静态的字段(有时称为非静态字段)称为实例变量。每当创建类的新实例时,都会为该类或其任何超类中声明的每个实例变量创建与该实例关联的新变量。


答案 2

只有1 * MyVar内存使用量,因为它被声明为静态


推荐