このプログラムがどのように動作しているか説明してください。
class A
{
//public static String name = "asdf";
public static final String name = "asdf";
static {
System.out.println("static block inside A");
}
{
System.out.println("regular code block");
}
}
public class tt
{
public static void main(String ar[])
{
System.out.println(A.name);
//A a = new A();
}
}
上記のプログラムの実行中に、次のような出力が得られました - asdf
Qns : コード ブロックが実行されないのはなぜですか?非最終的な静的変数名のコメントを外し、最終的な静的変数のコメントを 外すと、A asdf Qns内の静的ブロックとして出力が得られます: 通常のコード ブロックが実行されないのはなぜですか?
System.out.println(A.name); にコメントすると A a = new A(); のコメントを外します。クラス tt で、出力を次のように取得しました - 通常のコード ブロックQns内の静的ブロック : ここでは、両方のブロックが実行されています。しかし、静的ブロックと通常のブロックの違いは何ですか?