天天看点

关于java的static的疑问

如下代码:

public class TestStatic
{
      private static TestStatic testStatic = new TestStatic();
      {
           System.out.println("非静态");
      }
      static
      {
           System.out.println("静态");
      }
      
      public TestStatic()
      {
           System.out.println("构造方法");
      }

      public static void main(String[] args)
      {
          new TestStatic();
      }
}
           

我理解的运行结果是:

静态

非静态

构造方法

非静态

构造方法

因为类中的static代码在类一加载进来的时候就先执行,对于testStatic静态变量它是new TestStatic类,就应该先执行static{}块中的代码。

但是结果是:

非静态

构造方法

静态

非静态

构造方法

对于这样的结果不是很理解???

如大神些看了还望能解释下。

继续阅读