了解最终变量

Pra*_*tha 6 java oop final

假设一个类包含一个final变量.为什么每次创建类的对象时都为最终变量分配新空间,即使它的值无法更改?为什么它的内存分配不像static变量?

GBl*_*ett 14

考虑这个例子:

public class Example {
    public final int someNum;
    // constructor
    public Example(int n) {
        someNum = n;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,此类的每个对象可能具有不同的值someNum,即使它是final变量.因此,必须为该类的每个实例分配新空间.


Mur*_*nik 5

虽然您无法为final变量分配新值,但该类的每个实例都可以具有不同的值,因此每个实例都需要为其自己的成员分配自己的内存.