一、背景
Java 中的代码块有三种,分别是普通代码块,构造代码块,静态代码块。
那么,如果一个类中同时拥有该三种代码块,执行顺序是什么?
二、代码块介绍
首先,先分别介绍一下这三种代码块:
- 普通代码块:方法中的 {}。
- 构造代码块:不在方法中的 {}。
- 静态代码块:static {}。
这三种代码块对应的写法如下:
public class Cat {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void run() {
// 普通代码块
{
System.out.println("普通代码块");
}
}
// 构造代码块
{
System.out.println("构造代码块");
}
// 静态代码块
static {
System.out.println("静态代码块");
}
}
三、代码块的执行顺序
首先先说结论,执行顺序为 静态代码块 > 构造代码块 > 普通代码块。
当然,如果没有调用普通代码块所在的方法,普通代码块就不会执行。
所以如果只实例化了对象,执行顺序为 静态代码块 > 构造代码块。