时间的法外狂徒

导航

java中的代码块、构造方法、方法的调用顺序

一、调用顺序

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

 

posted on 2020-07-29 16:59  抄手砚  阅读(491)  评论(0编辑  收藏  举报