静态代码块、构造代码块、构造方法的执行顺序是什么
原创静态代码块、构造代码块、构造方法的执行顺序解析
在Java中,当我们创建一个对象时,静态代码块、构造代码块和构造方法的执行顺序是一个经常性被讨论的话题。下面我们将详细分析这三者的执行顺序。
1. 静态代码块
静态代码块是使用static关键字定义的代码块,它在类加载时执行,并且只会执行一次。通常用来初始化类的静态成员变量。
public class Test {
static {
System.out.println("静态代码块执行");
}
}
2. 构造代码块
构造代码块是在类中定义的普通代码块,它会在每次创建对象时执行。构造代码块用于初始化对象的成员变量,优先级高于构造方法。
public class Test {
{
System.out.println("构造代码块执行");
}
}
3. 构造方法
构造方法是类中用于创建对象的方法,与类名相同且没有返回值。构造方法在对象创建时执行,用于初始化对象的属性和方法。
public class Test {
public Test() {
System.out.println("构造方法执行");
}
}
执行顺序
现在我们来看一下这三者的执行顺序。下面是一个示例代码:
public class Test {
static {
System.out.println("静态代码块执行");
}
{
System.out.println("构造代码块执行");
}
public Test() {
System.out.println("构造方法执行");
}
public static void main(String[] args) {
Test t1 = new Test();
Test t2 = new Test();
}
}
输出导致:
静态代码块执行
构造代码块执行
构造方法执行
构造代码块执行
构造方法执行
从输出导致可以看出,静态代码块在类加载时执行,并且只会执行一次;构造代码块在每次创建对象时执行,优先级高于构造方法。所以,它们的执行顺序为:静态代码块 -> 构造代码块 -> 构造方法。