修飾子 static と final Java言語では型とアクセス・モードの他に、 変数及びメソッドの性質を指定する修飾子が何種類か存在します。 static と final は、それらの中でも最も頻繁に用いられるキーワードです。
static として宣言された変数はオブジェクトごとに生成されません。
そのクラスのオブジェクトすべてに共通して利用されます。
static な変数は、static でない変数よりも先に初期化されています。
(このため変数の初期化の順番が、プログラムの見かけとは
異なって見える場合があるので注意してください。)
そのクラスの中の static変数しか対象として取り扱わないメソッドは、
staticメソッドとして宣言することができます。
(他のクラスのオブジェクトを生成したり、取り扱ったりすることはかまわない。)
staticメソッドの中で、そのクラスの staticでない変数や
staticでない他のメソッドを利用しようとすると、
コンパイル時にチェックされエラーとなります。
static な変数およびメソッドは、オブジェクトを生成しなくても利用できます。
アクセスするには次のようにクラス名を直接使います。
(オブジェクトを生成した場合は、そのオブジェクト名で指定してもよい。)
Color.red; // 赤色を表す static なデータ
final は変数ならば値の変更を許さないこと、
メソッドであれば再定義を許さないこと、
クラスであればサブ・クラスの定義を許さないことを示します。
final で宣言された数値は定数となります。これは C 及び C++ の const 宣言
と同じ機能を提供します。
final の変数をサブ・クラスの中で再定義することは許されます。
static と final の概念は互いに独立です。 しかし、クラス固有の定数を定義する目的で static かつ final な 変数がしばしば用いられます。
public static final int BUFSIZE=1024;