Google検索エンジン

トップページ » Javaメソッド入門 » クラス変数


クラス変数 - Javaにおけるクラス変数の基本 -

  • クラス変数とは?

    クラス変数とは、プログラム内のどのブロックやメソッドでも有効な変数を指します。 「クラス」という区切りがないプログラミング言語においては、「グローバル変数」と言われています。 逆に、プログラム中のあるメソッド内で宣言された変数で、宣言したメソッド内でのみ有効な変数をローカル変数といいます。 同名のローカル変数とクラス変数があった場合、ローカル変数が宣言されたブロック内であればローカル変数の値が参照され、それ以外ではクラス変数の値が参照されます。

    一度メソッドの処理を抜けてしまっても、クラスがインスタンス化されている間は、値を保持することができます。 ただし、値の保持にはメモリ領域が必要なので、クラス変数はローカル変数より長い間メモリを占有することになります。 大きなシステムの開発でクラス変数を乱用すると、メモリの占有率が高くなったり、改訂しにくくなったり、開発に悪影響を及ぼす可能性があります。

    最初、個人でプログラミングしている段階では、クラス変数はローカル変数と異なり、長い間値を保持できるので便利に感じます。 便利なので多用してしまいがちなのですが、デメリットもあるので、多用することはおすすめできません。 ローカル変数とクラス変数を、臨機応変に使い分けることが重要です。


    クラス変数を利用する

    クラス変数は「static int kekka = 0」のように初期化することができます。 最初は型宣言のみで、後で代入することもできます。 以下のプログラムを入力して、実行してみてください。

    サンプルソースコード
    class sample {
    	static int kekka = 0;
    	public static void main(String args[]) {
    		int aaa = 1;
    		System.out.println( method(aaa) );// 1回目
    		System.out.println( method(aaa) );// 2回目
    		System.out.println( method(aaa) );// 3回目
    	}
    	static int method(int num){
    		kekka = kekka + num;
    		return kekka;
    	}
    }
    

    実行結果として、上から「1、2、3」が出力されます。
    処理の経緯をみると、以下の1〜7のようになります。
    1.最初「kekka」は、「0」で初期化されます。
    2.1回目は「0+1」の結果が返されて「1」が表示されます。
    3.この時点で、「kekka」は、代入された「1」を保持しています。
    4.2回目は「1+1」の結果が返されて「2」が表示されます。
    5.この時点で、「kekka」は、代入された「2」を保持しています。
    6.3回目は「2+1」の結果が返されて「3」が表示されます。
    7.この時点で、「kekka」は、代入された「3」を保持しています。
    この値を保持している変数「kekka」をクラス変数と呼びます。

    次のページには、メソッドに関する練習問題を掲載しています。是非、お試しください。