了解最终变量

时间:2018-09-20 20:19:04

标签: java oop final

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

3 个答案:

答案 0 :(得分:14)

考虑以下示例:

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:3)

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