なぜJava定数はstaticと宣言されていますか?
class Foo{
static final int FII = 2 ;
}
これで私は最終の使用を理解しますか?購入する理由はなぜ静的である必要があるのですか?インスタンス変数ではなくクラス変数にする必要があるのはなぜですか?
クラスのインスタンスによって異なる場合は、明らかにconstantではありません。 Math
の各インスタンスに対してpiの異なる値を取得することはどういう意味ですか(Math
でインスタンスを構築することさえできません)。または、String
の各インスタンスの大文字と小文字を区別しない異なる順序付けですか?
定数が静的でない場合、Javaは、クラスのすべてのオブジェクトでその定数にメモリを割り当てます(つまり、オブジェクトごとに定数の1つのコピー)。
定数が静的である場合、そのクラスの定数のコピーは1つだけです(つまり、クラスごとに1つのコピー)。
したがって、定数に値が1つしかない場合は、静的と宣言する必要があります。
オブジェクトの作成時間など、オブジェクトごとに定数の値が異なる場合は、静的と宣言しないでください。
そのクラスのインスタンスなしでアクセスできるようにするためです。
定数フィールドにアクセスするためだけにインスタンスを作成する必要があるのは、リソースの少しの無駄です。