• 类的初始化顺序


    一 , :当程序执行时,当需要用到某个类时,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

  • 相关阅读:
    Beetl模板 [记录]
    wx 小程序开发 [记录]
    高德定位获取省市区[记录]
    vue 学习记录 [记录]
    正则表达+验证 [记录]
    倒计时60s短信 [记录]
    @media [记录]
    JSON + Ajax [记录]
    Webstorm [记录]
    JQ 组合代码 [记录]
  • 原文地址:https://www.cnblogs.com/a-old-foolish/p/11079429.html
Copyright © 2020-2023  润新知