• 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
    就算这个世道烂成一堆粪坑,那也不是你吃屎的理由
  • 相关阅读:
    50多条mysql数据库优化建议
    反向代理|与正向代理区别区别
    CDN技术
    mysql存储过程对900w数据进行操作测试
    Navicat For Mysql快捷键
    Linux下目标文件分析
    Linux下的两个经典宏定义 转
    debuginfo-install glibc-2.17-157.el7.x86_64
    index merge 引起的死锁分析
    linux内核源码中常见宏定义
  • 原文地址:https://www.cnblogs.com/whalesea/p/13398187.html
Copyright © 2020-2023  润新知