最终变量的理解

Understanding of final variable

假设一个 class 包含一个 final 变量。为什么每次创建 class 的对象时都会为 final 变量分配新的 space,即使其值无法更改?为什么它的内存分配不像static变量?

考虑这个例子:

public class Example {
    public final int someNum;
    // constructor
    public Example(int n) {
        someNum = n;
    }
}

在此示例中,此 class 的每个对象可能具有不同的 someNum 值,即使它是一个 final 变量。因此,必须为 class 的每个实例分配新的 space。

虽然不能为final变量分配新值,但class的每个实例都可以有不同的值,因此每个实例都需要为自己分配自己的内存会员.

对于Java中的final变量,声明时不需要赋值。 final 变量可以稍后赋值,但只能赋值一次。由于可以分配不同的值,因此需要不同的内存分配。