A static variable is common to all instances (or objects of the class) because it is a class level variable. 言い換えれば、静的変数の単一のコピーだけが作成され、クラスのすべてのインスタンスの間で共有されると言うことができます。
変数と同様に、静的ブロック、静的メソッド、静的クラスがありますが、それらについて読むには、以下を参照してください: static keyword in java.
Static variable Syntax
static keyword にデータ型、変数名を続けてください。 グローバル変数のようにすべてのインスタンスで共通の値を持ちたい場合は、静的変数を宣言したほうがメモリを節約できます (静的変数では 1 つのコピーしか作成されないため)。
Static variable example in Java
class VariableDemo{ static int count=0; public void increment() { count++; } public static void main(String args) { VariableDemo obj1=new VariableDemo(); VariableDemo obj2=new VariableDemo(); obj1.increment(); obj2.increment(); System.out.println("Obj1: count is="+obj1.count); System.out.println("Obj2: count is="+obj2.count); }}
Output:
Obj1: count is=2Obj2: count is=2
上の例でわかるように、両方のオブジェクトはスタティック変数の同じコピーを共有しており、それが count の同じ値を表示した理由です。
例 2: 静的変数に静的メソッドで直接アクセスできる
class JavaExample{ static int age; static String name; //This is a Static Method static void disp(){ System.out.println("Age is: "+age); System.out.println("Name is: "+name); } // This is also a static method public static void main(String args) { age = 30; name = "Steve"; disp(); }}
Output:
Age is: 30Name is: Steve
Static variable initialization
- Static variable is initialized when class is loaded.
- Static variables are initialized before any object of that class is created.これは、そのクラスのオブジェクトが作成される前に初期化されることを意味します。
- 静的変数は、クラスの静的メソッドが実行される前に初期化されます。
静的変数と非静的変数のデフォルト値は同じです。
primitive integer (long
, short
etc): 0
primitive floating points (float
, double
): 0.0
boolean: false
object references: null
Static final variables
The static final variables are constants…静的変数とそうでない変数の初期値は同じです。
public class MyClass{ public static final int MY_VAR=27;}
Note: 定数変数名は大文字でなければなりません!間にアンダースコア(_)を使うことができます。 静的変数なので、アクセスするためにクラスのオブジェクトは必要ありません。
ポイント:
最終変数は常に初期化が必要で、初期化しない場合はコンパイルエラーになります。