• 类的初始化顺序


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

  • 相关阅读:
    npm 5.4.2 更新后就不能用了
    Node.js 被分叉出一个项目 — Ayo.js,肿么了
    页面缓存之Meta http-equiv属性详解
    Javascript 浮点计算问题分析与解决
    详解 Cookie 纪要(vue.cookie,jquery.cookie简化)
    Cookie 基本操作
    HTML5上传图片预览
    location.href跳转测试
    ios中iframe的scroll滚动事件替代方法
    JS数组API
  • 原文地址:https://www.cnblogs.com/a-old-foolish/p/11079429.html
Copyright © 2020-2023  润新知