staticなメンバー

修飾子 static が付いた変数(フィールド)は、クラスのオブジェクトすべてで 共有され、オブジェクトを生成しなくても利用することができます。
変数の宣言の時に型以外に変数の性質を指定するキーワードが用いられます。 これらのキーワードは修飾子と呼ばれます。
修飾子 static が付いた変数は、「クラス変数」と呼ばれる変数となります。 クラス変数は、 同一のバーチャル・マシン内にあるそのクラスのオブジェクトすべてが 共通して利用します。 そのクラスが提供する処理の中で、しばしばアクセスされる定数やオブジェクト、 生成されたオブジェクトの個数など共通して参照したいデータなどを static で 宣言します。 これに対して static でない通常の変数は、 生成時にオブジェクトが独自にメモリ上に確保するもので、「オブジェクト変数」 と呼ばれることもあります。 これらの変数の値は、もちろん各オブジェクトごとに独立したものです。
クラス変数は、オブジェクトを生成しなくても参照することができます。 Colorクラスに用意された 13色の static なデータは、その典型的な例です。

Color color = Color.red;

static 宣言はメソッドに対しても行うことができます。その場合の意味は、 「クラス変数と他の staticなメソッドの呼び出ししか行わない」という ことです。オブジェクト変数を 1個でも参照するメソッドは、static には なれません。
staticなメソッドも、やはりオブジェクトを生成しないで用いることができます。


int x = Integer.parseInt( "10000" );  // 文字列を int型の数値に変換するメソッド

Graphicsクラスの描画メソッドなどは、その性質から static になっても よさそうな気がします。しかし、実際には Graphicsの各オブジェクトごとに 異なる Font や Color のデータを利用しなくてはいけません。 したがって static なメソッドにはなれません。 その結果、

     Graphics g;

     g.setColor( Color.red );

のように必ず Graphics のオブジェクトが必要になります。