In the code below why is the initializer block not called? But if the main() is removed from this class and when it is loaded from another class, the initializer block executes.
public class AAStatic {
static String s = "a";
{
System.out.println("hi");
m1();
}
public static void main(String[] args) {
m1();
System.out.println(s);
}
static{
m1();
}
static void m1(){
s+="b";
}
}