静的変数、静的メソッド

静的メソッド、変数の宣言は

static 型 変数名;
static 型 メソッド名(引数)

のように宣言する

静的変数は静的変数が定義されているクラスのすべてのオブジェクトが共有できる 変数です
なので、各オブジェクトごとに同じ変数名だけど内容が違うようにしたい場合は staticで宣言しないようにします。

例えば、静的変数を使ってしまうと・・・


#codeprettify{{ class a{

   static int num = 0;
   a(int num){
       this.num = num;
   }
   public void output(int cnt){
       System.out.println("a_obj" + cnt + " = " + num);
   }

}

class b{

   public static void main(String args[]){
       a a_obj1 = new a(5);
       a a_obj2 = new a(6);
       a a_obj3 = new a(7);
       a_obj1.output(1);
       a_obj2.output(2);
       a_obj3.output(3);
   }

} }} 結果

D:>java b
a_obj1 = 7
a_obj2 = 7
a_obj3 = 7

というように、同じ数字になってしまいます。
ひとつの変数を多くのオブジェクトで統一して使う(なんかちょっと違うけど) 場合は静的変数にして、同じ変数名でも独立して使う場合はインスタンス変数 にしなければならないということです。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-10-18 (火) 23:23:57