静的メンバ変数とは、同一クラスとサブクラス(派生クラス)で共有する変数。
静的メンバ変数を持つクラスのオブジェクトのインスタンス(実体)を生成すると、全てのオブジェクトのインスタンスで同一の変数として共有する。
静的メンバ変数は、クラスの定数として使ったり、オブジェクトを生成済みかなどのクラスの状態を格納する変数として使うことが多い。
静的メンバ変数のことを、クラス変数、静的フィールドなどと呼ぶこともある。
構文
class クラス名 {
static データ型 変数名 = 値; // 宣言と同時に代入
}
static データ型 変数名 = 値; // 宣言と同時に代入
}
「static」修飾子を付け宣言する。
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | package samplePackage; public class SampleClass { public static void main( String[] args ){ // クラス「SampleClass2」の静的メンバ変数「varMember」の値を表示 System.out.println( "SampleClass2.varMemberの値は、「" + SampleClass2.varMember + "」である。" ); // オブジェクトのインスタンスを生成 SampleClass2 varObject = new SampleClass2(); // クラス「SampleClass2」のメンバーメソッド「setMemberVar( "静的メンバ変数B" )」を実行。 varObject.setMemberVar( "静的メンバ変数B" ); // クラス「SampleClass2」のメンバーメソッド「getMemberVar()」の戻り値を表示 System.out.println( "varObject.getMemberVar()の戻り値は、「" + varObject.getMemberVar() + "」である。" ); // 別のオブジェクトのインスタンスを生成 SampleClass2 varObject2 = new SampleClass2(); // クラス「SampleClass2」のメンバーメソッド「getMemberVar()」の戻り値を表示 System.out.println( "varObject2.getMemberVar()の戻り値は、「" + varObject2.getMemberVar() + "」である。" ); } static class SampleClass2 { // 静的メンバ変数。 static String varMember = "静的メンバ変数A"; void setMemberVar( String varArg ) { // 静的メンバ変数に値を代入。 varMember = varArg; } String getMemberVar() { // 静的メンバ変数の値を返す。 return varMember; } } } |
実行結果
SampleClass2.varMemberの値は、「静的メンバ変数A」である。
varObject.getMemberVar()の戻り値は、「静的メンバ変数B」である。
varObject2.getMemberVar()の戻り値は、「静的メンバ変数B」である。
varObject.getMemberVar()の戻り値は、「静的メンバ変数B」である。
varObject2.getMemberVar()の戻り値は、「静的メンバ変数B」である。