修飾子 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;