ベストアンサー
静的ブロック{}
- 静的ブロックは、クラス内の静的データを初期化するために使用され、静的リソースを作成します。
- 静的ブロックは、クラスがメモリに読み込まれるとすぐに1回だけ実行されます。
- 静的ブロックは、JavaClassローダーによってmain()メソッドの前に実行されます。
- クラスには複数の静的ブロックを含めることができ、プログラムに書き込まれたのと同じ順序で実行されます。 。
- static {}、クラスが読み込まれるたびに実行されます。
- 静的メソッドと非静的メソッド内に静的ブロックを書き込むことはできません(静的ブロックは別々に書き込まれます)。 )
- 静的ブロック内でアクセスできるのは静的変数のみです。
- 静的ブロック内で静的メソッドを呼び出すことができます。
- 内部でメソッドを作成することはできません。静的ブロック。
- 非静的変数および非静的メソッドは、内部でアクセスできません。静的ブロック。
- 静的ブロック内の非静的変数またはメソッドにアクセスしようとすると、コンパイル時エラーが発生します。
静的ブロック型から非静的メソッドwow()への静的参照を作成できません
以下の静的ブロックの例を検討してください。
- クラス内に1つの静的ブロック{}があります。
- 2つの静的変数「ss、j」が宣言されており、静的メソッド内と静的ブロック内でアクセスされます。
- 静的メソッドdisp()が記述され、その中に静的変数が出力されます。
- このメソッドは静的ブロック内で呼び出されます{}
- 静的変数と静的メソッドは次のようになります。静的ブロック内でのみアクセス可能
public class staticblock {
static int ss=23; // initialize the static variable with value;
public static void disp() {
System.out.println("runnin static block before main method");
System.out.println("Value inside static method is "+ss);
}
static int j;
static // static block
{
j=8;
System.out.println("static block is invoked with the value"+j); // access the static variable inside static block
disp(); // calling the static method inside static block
}
public static void main(String[] args) {
}
}
出力を確認する
静的ブロックがvalue8で呼び出される
メインメソッドの前に静的ブロックを実行する
静的メソッド内の値は23です
回答
静的ブロックは静的初期化ブロック spanとも呼ばれます>、クラスは任意の数の静的ブロックを持つことができ、Javaクラス内のどこにでも表示できます。
このブロックは、クラスがloのときに実行されます。記憶に残る。 Javaランタイムシステムは、静的初期化ブロックがソースコードに表示される順序で呼び出されることを保証します。
例:
public class Solution{
static {
System.out.println("Static block - 1");
}
static {
System.out.println("Static block - 2");
}
public static void main(String[] args){
System.out.println("Main Method");
}
static {
System.out.println("Static block - 3");
}
}
出力:
Static block - 1
Static block - 2
Static block - 3
Main Method