Constructors are invoked after the instance variables of a newly created object of the class have been assigned their default initial values and after their explicit initializers are executed. 
构造方法是新创建的对象的实例变量缺省初始化以及显式初始化之后才执行的
                 ------摘自<think in java>
不可能的吧????
构造,顾名思义,就是构造一个对象

解决方案 »

  1.   

    你不是看了THINK IN JAVA吗?上面不是有很详细的说明吗,而且还有很详细的测试用例,你可以去看测试用例啊,代码啊。
      

  2.   

    think in java 是对的 给你个例子你看看
    public class InitialOrderTest { // 静态变量
    public static String staticField = "静态变量";
    // 变量
    public String field = "变量"; // 静态初始化块
    static {
    System.out.println(staticField);
    System.out.println("静态初始化块");
    } // 初始化块
    {
    System.out.println(field);
    System.out.println("初始化块");
    } // 构造器
    public InitialOrderTest() {
    System.out.println("构造器");
    } public static void main(String[] args) {
    new InitialOrderTest();
    }
    }从运行结果你就能看出来构造函数的执行顺序了?
      

  3.   

    Constructors are invoked after the instance variables of a newly created object of the class have been assigned their default initial values and after their explicit initializers are executed.
    出自THE Java™ Programming Language, Fourth Edition 
    不是Thinking In Java上的。
    这句话其实说对或者不对都有道理。
    严格的说,执行流程先到达构造方法,然后去执行直接初始化语句,再执行构造方法里的代码。中间有两次跳转,单步可以 发现。
    看bytecode,编译器把默认初始化语句和构造方法里的语句都编译到<init>方法中去了,不过直接初始化语句在前,原来构造方法里的语句在后而已。