构造代码块、静态构造代码块和构造器执行顺序

构造代码块、静态构造代码块和构造器执行顺序

1.构造代码块

​ 在java中一对{}就被称为代码块,写在类中的{}称为构造代码块,可用于初始化类属性,构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造器。

public class CodeBlock {
     
	private int age;
    //构造代码块
	{
     	 
        age = 12 ; //构造代码块的作用:初始化,先于构造器执行
		System.out.println("构造代码块");
	}
 	//构造器
	public CodeBlock() {
     
		System.out.println("构造器");
	}
  
	public static void main(String[] args) {
     
		CodeBlock cb = new CodeBlock();
	}
}

运行结果为

构造代码块
构造器

2.静态构造代码块

​ 构造代码块前加上static修饰符就变成了静态构造代码块,静态构造代码块在加载类时运行,只运行一次,静态构造代码块的执行次序优先于构造代码块和构造器。

public class CodeBlock {
     
	private int age;
    //构造代码块
	{
     
		System.out.println("构造代码块");
	}
    //静态构造代码块
    static{
     
        System.out.println("静态构造代码块");
    }
 	//构造器
	public CodeBlock() {
     
		System.out.println("构造器");
	}
  
	public static void main(String[] args) {
     
        //两次创建对象
		CodeBlock cb = new CodeBlock();
		new CodeBlock();
	}
}

​ 运行结果是

静态构造代码块
构造代码块
构造器
构造代码块
构造器

​ 静态构造代码块的运行次序最高,因此先运行。构造代码块和构造器随着对象的创建而执行,因此两次创建对象都会执行,静态构造代码块只随着类的加载运行一次。

你可能感兴趣的:(构造代码块、静态构造代码块和构造器执行顺序)