请您详细说明此代码产生的原因
以下输出:a b c 2 3 4 1
?
一旦在JVM中加载了类,就会执行静态初始化块,所以我除了先看到b之外。我已经看过其他类似的帖子,但我认为他们不会考虑使用编译时常量初始化静态变量的情况。
public class InitTest{
public InitTest(){
s1 = sM1("1");
}
static String s1 = sM1("a");
String s3 = sM1("2");
{
s1 = sM1("3");
}
static{ s1 = sM1("b"); }
static String s2 = sM1("c");
String s4 = sM1("4");
public static void main(String args[]){
InitTest it = new InitTest();
}
private static String sM1(String s){
System.out.print(s);
return s;
}
}