解决方案 »

  1.   


    去看看java编程思想关于初始化这章!
      

  2.   

    程序加载类的时候,会先加载类的静态块,当你运行main方法时,首先会加载ExplicitStatic类,加载类的静态块,static Go g1 = new Go();static Go g2 = new Go(); 同样g1被new出来后,也会首先加载Go的静态块
    static String s1 = "run";
    static String s2, s3;
    static {
    s2 = "drive car";
    s3 = "fly plane";
    System.out.println("s2 & s3 initialized");
    }
    然后才是构造方法
    Go() {
    System.out.println("Go()");
    }
    当这些都加载完成后,开始执行main方法.所以 输出的结果是
    s2 & s3 initialized
    Go()
    Go()
    Inside main()
    run or drive car or fly plane
    Go.s1: runPS.多了解一下加载机制 <a>http://www.cnblogs.com/alexlo/archive/2013/03/05/2944573.html</a>
      

  3.   

    静态块>静态变量>静态方法>构造函数>成员函数。一般来说是这样的
      

  4.   

    如果lz了解jvm在运行时具体的执行过程就不会有这个疑问了,在jvm对代码的运行期间,类静态变量初始化要比对象的初始化要早一步,也就是说先执行类静态变量的初始化,再执行对象的初始化(也就会类构造方法中的初始化)操作。
      

  5.   

    你要在加个非静态代码块,局部变量等,
    java初始化的东西基本就齐了