Following codes, why the print result is ABA. In my opinion, JVM will loads static block statements at first, then loads other statements, so B will print at first.
public class Test{
public static Test test = new Test();
{
System.out.println("A");
}
static {
System.out.println("B");
}
public static void main(String[] args) {
Test test = new Test();
}
}