• 类的初始化顺序


    一 , :当程序执行时,当需要用到某个类时,Java执行引擎会先检查类是否已加载,若没有加载,则加载。在执行类的加载过程中,会先初始化静态成员变量和静态代码块,静态成员变量和静态代码块的执行顺序按照其代码顺序。

    二,:在生成对象时,会先初始化成员变量,然后再执行构造器。其中要注意类的加载和类的生成对象是两个过程,只要用到某类,该类就一定会被加载;但不一定需要实例化生成对象。比较下面程序1和程序2:

    程序1:

    public class Test {
        C c = new C();
        static B b1 = new B();
        public Test () {
            
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Test t ;
        }
    
        
        static class B{
            public B() {
                System.out.println("B");
            }
            static {
                System.out.println("static B");
            }
            public static void printFun() {
                System.out.println("function B ");
            }
        }
        static class C{
            public C() {
                System.out.println("C");
            }
            static {
                System.out.println("static C");
            }
            public static void printFun() {
                System.out.println("function C ");
            }
        }
    }

    执行结果为:

    static B
    B

    程序二:

    public class Test {
        C c = new C();
        static B b1 = new B();
        public Test () {
            
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Test t = new Test ();
            
            
        }
    
        
        static class B{
            public B() {
                System.out.println("B");
            }
            static {
                System.out.println("static B");
            }
            public static void printFun() {
                System.out.println("function B ");
            }
        }
        static class C{
            public C() {
                System.out.println("C");
            }
            static {
                System.out.println("static C");
            }
            public static void printFun() {
                System.out.println("function C ");
            }
        }
    }

    执行结果为:

    static B
    B
    static C
    C

  • 相关阅读:
    InfluxDB简单用法
    tcpdump用法
    MySQL 数据库设计规范(二)
    MySQL数据库规范(一)
    ICP问题求解SVD方法
    三角化求3D坐标
    mysql的几个timeout参数
    mybatisconfig
    mysql 连接的回收
    接口性能P99,P95计算
  • 原文地址:https://www.cnblogs.com/a-old-foolish/p/11079429.html
Copyright © 2020-2023  润新知