【学到一招】java类初始化顺序

java类的初始化顺序
    对于java类主要有:静态变量,静态初始化块,变量,初始化块,构造器,他们的先后顺序为  静态变量 ==静态代码块>变量初始化块=变量>构造器。一下为一些代码的测试:


public calss InitialOrder
{


       public static String staticField ="static Field";
   
      public String field ="变量";       

       static
       {
           System.out.println(staticField);
           System.out.println("初始化 静态代码块");
       }
       
      public InitialOrder()
      {
          System.out.println("构造器");
      }

 }

上面的构造顺序为:staticField -->静态代码块-->变量--->初始化块-->构造器


对于有类的继承的情况时:

顺序为:

父类的静态变量
父类静态初始化块
子类静态变量
子类的静态的代码块

[b]以上的内容都是在类加载时执行的[/b]
子类的main方法(调用子类的地方)

父类的变量
父类的初始化块
父类的构造器

子类的变量
子类的初始化块
子类的构造器

子类 的静态变量和静态初始化块的初始化是在父类的变量,初始化块,和构造器之前完成。

对于同一级别的内容主要取决于其在类中出现的顺序。

先执行静态变量和静态代码块
再执行动态的内容,动态的执行顺序为变量初始化,初始化代码块,构造函数。

先执行基类再执行子类的一直递归下去。(静态的内容只会执行一遍)




你可能感兴趣的:(java)