关于static代码块执行顺序的问题

public class Tmp {
    public static Tmp t1 = new Tmp();

    {
        System.out.print("a");
    }

    static {
        System.out.print("b");
    }

    public static void main(String[] args) {
        Tmp t2 = new Tmp();
    }
}





根据我以往的理解,应该是static代码块先执行,输出baa才对,结果实际上输出aba,网上查了查没什么结果。希望有好心人可以帮忙解释一下

https://blog.csdn.net/sinat_34089391/article/details/80439852