Javaのstatic変数の役割はなんですか
Java の static キーワードを使用すると、変数を修飾して静的変数にすることができます。静的変数には次のような特徴と機能があります。
- 共有性:静的変数はインスタンスオブジェクトではなくクラスに属し、すべてのインスタンスオブジェクトは1つの静的変数を共有します。1つのインスタンスオブジェクトの静的変数の値を変更すると、他のインスタンスオブジェクトにも影響します。
- ライフサイクル:静的変数のライフサイクルはクラスのライフサイクルと同じで、クラスがロードされたタイミングで初期化され、プログラムが終了したタイミングで破棄されます。静的変数の値はプログラム終了時までずっとメモリに保持されます。
- クラス名から直接アクセス可能です。静的変数はインスタンスオブジェクトに依存せず、クラス名から直接アクセスでき、オブジェクトを作成する必要はありません。たとえば:ClassName.staticVariable。
- クラスの静的変数(static変数)は、静的メソッド、インスタンスメソッド、コンストラクタなど、クラスのどこからでもアクセスできます。そのため、クラス全体のグローバル変数として、どこからでもアクセスできます。
- インスタンス変数との違い:静的変数はクラスに属し、インスタンス変数はインスタンスオブジェクトに属する。静的変数はメモリ上に1つのコピーしかないが、インスタンス変数は各インスタンスオブジェクトに1つのコピーがある。
つまり、static静的変数は、クラスの全てのインスタンス・オブジェクトでデータを共有し、クラス名で直接アクセスできて、グローバル変数や定数の定義に向いているのです。