GeorgeYang'Blog

my technology blog

通过实例了解java类加载过程

阅读:171 创建时间:16-03-13 23:23:59 tags:java



有这样一段代码:

 public class StaticTest
 {
     public static void main(String[] args)
     {
         staticFunction();
     }

     static StaticTest st = new StaticTest();

     static
     {
         System.out.println("1");
     }

     {
         System.out.println("2");
     }

     StaticTest()
     {
         System.out.println("3");
         System.out.println("a="+a+",b="+b);
     }

     public static void staticFunction(){
         System.out.println("4");
     }

     int a=110;
     static int b =112;
 }

执行结果是:

 2
 3
 a=110,b=0
 1
 4

执行顺序是: 1.{},这个是()类的构造方法,运行在init之前 2.(),在运行对象的构造方法() 3.static,跟着运行static初始化 4.method,最后执行方法

关于a输出110,2输出0,是由于运行到StaticTest(){}时,static还没开始执行,所以static的变量也没有赋值。

原文地址