一、调用顺序
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