同一个类中的 静态代码块 构造代码块 构造方法
执行顺序:静态代码块 -- 构造代码块 -- 构造方法 (与编写代码的顺序无关)
class Code {
// 静态代码块
static {
int x = 1;
System.out.println(x);
}
// 构造代码块
{
int x = 2;
System.out.println(x);
}
// 构造方法
public Code() {
int x = 3;
System.out.println(x);
}
// 构造代码块
{
int x = 2;
System.out.println(x);
}
// 静态代码块
static {
int x = 1;
System.out.println(x);
}
}
public class test {
public static void main(String[] args) {
Code c1 = new Code();
Code c2 = new Code();
}
}
执行结果

new了两个对象c1,c2 所以构造代码块和构造方法都执行了2次,且构造代码块优先构造方法执行
静态static是随着类的加载而加载 所以只执行了1次
最后,再结合main方法的
class Code { // 静态代码块 static { System.out.println("我是静态代码块"); } // 构造代码块 { System.out.println("我是构造代码块"); } // 构造方法 public Code() { System.out.println("我是构造方法"); } } public class test { static { System.out.println("我是public类中的静态代码块"); } public static void main(String[] args) { System.out.println("1.我是main方法"); Code c1 = new Code(); System.out.println("2.我是main方法"); Code c2 = new Code(); } }
执行结果

结论:public类中的静态代码块先执行

浙公网安备 33010602011771号