请解释一下这个程序的行为如何?
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:这里两个块都在执行。但是静态块和常规块有什么区别?