重载的构造函数

OPK*_*OPK 0 java constructor overloading

从书中读取重载的构造函数后,我厌倦了以下代码:

public class Employee {

    String name;
    int idNumber;

    public Employee(){
        this("JJ", 0);
        System.out.println(name +" "+ idNumber);
    }

    public Employee(String name, int num){

        this.name = name;
        idNumber = num;
        System.out.println(name +" 2nd "+ idNumber);
    }
}


public class Object1 {

    public static void main(String[] args) {

        Employee emp = new Employee();
    }

}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

JJ 2nd 0

JJ 0
Run Code Online (Sandbox Code Playgroud)

我真的很困惑.为什么"JJ 2nd 0"首先打印出"JJ 0"?我创建了一个雇员对象emp并且没有在参数中传递任何args,是不是先调用第一个构造函数?

Psh*_*emo 5

new Employee(); 正在调用

public Employee(){
    this("JJ", 0);
    System.out.println(name +" "+ idNumber);
}
Run Code Online (Sandbox Code Playgroud)

在这个构造函数中

this("JJ", 0);

正在调用

public Employee(String name, int num)

构造函数,以调用结束

System.out.println(name +" 2nd "+ idNumber);.

负责印刷

JJ 2nd 0

什么时候this("JJ", 0);完成 System.out.println(name +" "+ idNumber);将被调用,你应该看到另一行

JJ 0