ホームページ >Java >&#&チュートリアル >Java の静的変数
変数が静的として宣言されるときは常に、各インスタンスが独自のコピーを持つのではなく、クラス全体で変数のコピーが 1 つだけ存在することを意味します。
静的変数
静的変数が宣言されると、変数の単一コピーが作成され、クラス レベルのすべてのオブジェクト間で共有されます。静的変数は本質的にはグローバル変数です。クラスのすべてのインスタンスは同じ静的変数を共有します。
静的変数に関する注意事項
静的変数はクラス レベルでのみ作成できます。
静的ブロックと静的変数は、プログラム内に存在する順序で実行されます。
静的変数はクラスを使用してのみ直接呼び出すことができます。この中でクラスのオブジェクトを作成する必要はありません。
// Java program to demonstrate execution // of static blocks and variables class Test { // static variable static int a = m1(); // static block static { System.out.println("Inside static block"); } // static method static int m1() { System.out.println("from m1"); return 20; } // static method(main !!) public static void main(String[] args) { System.out.println("Value of a : " + a); System.out.println("from main"); } }
上記のコードの結果:
from m1 Inside static block Value of a : 20 from main
静的メソッドは、クラス名を使用して別の静的メソッドまたは変数を呼び出すことができます。インスタンス メソッドや変数を呼び出すことはできません。
インスタンス メソッドは、className または参照変数を使用して静的メソッドまたは変数を呼び出すことができます。インスタンス変数を使用して、別のインスタンス メソッドまたは変数を呼び出すことができます。
最後のキーワード
Final キーワードが静的としてマークされている場合、それを上書きすることはできません。 Java では、final キーワードは、変数、メソッド、またはクラスを変更または拡張できないことを示すために使用されます。変数が Final として宣言されている場合、その値は初期化されると変更できません。
静的メソッドとフィールドの設計
静的メソッドにはクラスのインスタンスは必要ありません。これらはクラスのすべてのユーザー間で共有されます。インスタンス メソッドのコードのコピーは 1 つだけです。クラスの各インスタンスは、必要に応じて何度でも呼び出すことができます。
クラスが初めてロードされるとき、静的変数にメモリが与えられます。静的変数メソッドの場合、オブジェクトの代わりに className を使用します (例: className.variable
)静的メソッドを使用すると、呼び出し元がメソッドを呼び出すためだけにオブジェクトをインスタンス化する必要がなくなります。オブジェクトのインスタンスを使用して静的メソッドを呼び出すこともできます。コンパイラは参照の型をチェックし、オブジェクトの代わりにそれを使用します。
非静的メソッドへの静的参照を作成すると、コンパイラ エラーが発生します。
インスタンス メソッドのみが、参照変数を使用せずに同じクラスの他のインスタンス メソッドを呼び出すことができます。インスタンス メソッドにはオブジェクトが必要です。
重要なポイント:
static キーワードが最初の割り当てである場合、final 変数は再割り当てできます。たとえば、static Final 変数を宣言した場合、それは静的ブロック内で 1 回だけ初期化できることを意味します。最終変数が宣言されていても初期化されていない場合、コンパイラ エラーが発生します。
静的変数とインスタンス変数に関する知識を下のコメントに自由に追加してください。
以上がJava の静的変数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。