构造代码块 和 构造方法 执行顺序

构造代码块:定义在类的成员位置,直接使用{ },在{}中写代码内容。

位置:类中,方法外,和方法并列,和先后位置无关。

执行时机:创建对象的时候执行一次。在构造方法隐式3步的最后一步。当构造代码块执行结束之后,开始执行构造方法本身的代码内容

格式:

public class ClassName{
  // 构造代码块
  {
    // 执行语句 
  }
}

构造代码块和构造方法执行顺序:


class ConsCode{
    // 成员变量
    int a;
    int b;

    // 空参构造
    public ConsCode() {
        //System.out.println("HelloWorld!");
      	System.out.println("11我在构造代码块执行结束之后执行...");
    }

    // 给变量a赋值的构造
    public ConsCode(int a) {
        this.a = a;
      	System.out.println("22我在构造代码块执行结束之后执行...");
        //System.out.println("HelloWorld!");
    }

    // 给变量ab同时赋值的构造
    public ConsCode(int a , int b) {
        this.a = a;
        this.b = b;
        //System.out.println("HelloWorld!");
      	System.out.println("33我在构造代码块执行结束之后执行...");
    }

    // 构造代码块
    {
        System.out.println("构造代码块!。。。。。。。。。。。。。。。");
    }
}
public class ConstructorCodeDemo {
    public static void main(String[] args) {
        // 分别使用3个构造方法创建对象,并运行程序,显示执行3遍HelloWorld!
        ConsCode c1 = new ConsCode();
        ConsCode c2 = new ConsCode(10);
        ConsCode c3 = new ConsCode(10,20);
    }
}

构造代码块 和 构造方法 执行顺序