一、调用顺序
1、当调用一个实例方法时:
静态代码块——代码块——构造方法——实例方法
2、当调用一个静态方法时
静态代码块——静态方法
3、当调用多个实例方法
静态代码块——代码块——构造方法1——实例方法1——构造方法2——实例方法2
注意:静态代码块只会执行一次,即在写入jvm中时执行。多次实例化对象,不会重复创建。
二、测试实例
测试实体类:
public class Emp { static { System.out.println("静态代码块:"+System.currentTimeMillis()); } { System.out.println("代码块:"+System.currentTimeMillis()); } public static void staticMethod() { System.out.println("静态方法:"+System.currentTimeMillis()); } public Emp() { System.out.println("构造方法:"+System.currentTimeMillis()); } public void method() { System.out.println("实例方法:"+System.currentTimeMillis()); } }
1、执行一个实例方法
public class TestSort { public static void main(String[] args) { // Emp.staticMethod(); Emp emp = new Emp(); emp.method(); // Emp emp2 = new Emp(); // emp2.method(); } }
结果:
静态代码块:1596012952882 代码块:1596012952882 构造方法:1596012952882 实例方法:1596012952882
2、执行一个静态方法
public class TestSort { public static void main(String[] args) { Emp.staticMethod(); // Emp emp = new Emp(); // emp.method(); // Emp emp2 = new Emp(); // emp2.method(); } }
结果:
静态代码块:1596013004340
静态方法:1596013004340
3、执行多个实例方法
public class TestSort { public static void main(String[] args) { // Emp.staticMethod(); Emp emp = new Emp(); emp.method(); Emp emp2 = new Emp(); emp2.method(); } }
结果:
静态代码块:1596013069943 代码块:1596013069944 构造方法:1596013069944 实例方法:1596013069944 代码块:1596013069944 构造方法:1596013069944 实例方法:1596013069944