为什么Java常量被声明为静态的?

2022-09-01 04:02:01

为什么java常量被声明为静态?

class Foo{
    static final int FII = 2 ;
}

在这一点上我明白了最终的用法吗?购买为什么它必须是静态的?为什么它应该是类变量,而不是实例变量?


答案 1

如果一个常量不是静态的,Java将在类的每个对象中为该常量分配一个内存(即,每个对象一个常量的副本)。

如果一个常量是静态的,则该类的常量只有一个副本(即,每个类一个副本)。

因此,如果常量只有一个值,则应将其声明为 static。

如果该常量对于每个对象可能具有不同的值(例如对象的创建时间),则不应将其声明为静态。


答案 2

如果它可能因类的实例而异,那么它显然不是一个常量。为每个实例获取不同的 pi 值(甚至不允许构造实例)意味着什么?或者对 ? 的每个实例使用不同的不区分大小写的排序MathMathString


推荐