最终变量的理解
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 变量可以稍后赋值,但只能赋值一次。由于可以分配不同的值,因此需要不同的内存分配。
假设一个 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 变量可以稍后赋值,但只能赋值一次。由于可以分配不同的值,因此需要不同的内存分配。