java类初始化顺序 ----需要研究的

来源:互联网 发布:java获取访问者ip 编辑:程序博客网 时间:2024/05/23 15:40

http://ini.iteye.com/blog/2007835


public class TestStaticCon { 

    public static int a = 0;
      static {  
        a = 10;
          System.out.println("父类的静态代码块在执行a=" + a); 
    }   
    {  
        a = 8;
          System.out.println("父类的非静态代码块在执行a=" + a); 
    }
      public TestStaticCon() { 
 
        this("父类带参构造方法中a的值:" + TestStaticCon.a); // 调用另外一个构造方法  
        System.out.println(a);  
        System.out.println("父类无参构造方法在执行a=" + a); 
    }
      public TestStaticCon(String n) {  
        System.out.println(n);  
        System.out.println(a);
      }
      public static void main(String[] args) {  
        TestStaticCon tsc = null ;
          System.out.println("!!!!!!!!!!!!!!!!!!!!!");  
        tsc = new TestStaticCon(); 
    }

}

结论:静态代码块是在类加载时自动执行的,非静态代码块是在创建对象时自动执行的代码,不创建对象不执行该类的非静态代码块。且执行顺序为静态代码块------非静态代码块----构造函数。 



0 0
原创粉丝点击