构造函数被"调用"与构造函数"被执行"?

Ren*_*gas 4 java constructor terminology

构造函数调用和构造函数执行之间有什么区别?我正在阅读james Gosling的java编程语言中的构造函数顺序依赖.作者指出,当你创建一个对象构造函数时,首先调用,然后使用feild成员进行初始化,最后执行costructor.Both听起来和我一样.

Jas*_*n C 6

在这种情况下,"调用"是指调用它时,"执行"是指代码体实际运行时.

在您调用它和代码运行的时间之间,字段被初始化.

所以,你调用它,然后初始化发生,然后执行.

试试这个:

class Example {

    static int report() { System.out.println("initialize"); return 0; }

    int x = report(); // <- [Step 2] Initialization

    Example () {
        System.out.println("execute"); // <- [Step 3] Execution
    }

}
Run Code Online (Sandbox Code Playgroud)

然后,在别处:

System.out.println("invoke");
new Example(); // <- [Step 1] Invocation
Run Code Online (Sandbox Code Playgroud)

输出将是:

invoke
initialize
execute
Run Code Online (Sandbox Code Playgroud)