假设一个类包含一个final
变量。为什么每次创建类对象时都为最终变量分配新空间,即使其值无法更改?为什么其内存分配不像static
变量?
答案 0 :(得分:14)
考虑以下示例:
public class Example {
public final int someNum;
// constructor
public Example(int n) {
someNum = n;
}
}
在此示例中,该类的每个对象的someNum
可能具有不同的值,即使它是final
变量也是如此。因此,必须为该类的每个实例分配新的空间。
答案 1 :(得分:5)
虽然不能为final
变量分配新值,但是类的每个实例可以具有不同的值,因此每个实例都需要为其自己的成员分配自己的内存。
答案 2 :(得分:3)
对于Java中的最终变量,在声明时不必分配值。最终变量可以在以后分配值,但只能分配一次。由于可以分配不同的值,因此需要不同的内存分配。