• Java笔记 #04# 类的初始化顺序补充


    参考 java中的类的初始化顺序详解

    package org.sample;
    
    class Bread {
        Bread() { System.out.println("Bread()"); }
    }
    class Cheese {
        Cheese() { System.out.println("Cheese()"); }
    }
    class Lettuce {
        Lettuce() { System.out.println("Lettuce()"); }
    }
    
    public class TestOrder {
    
        static {
            System.out.println("static block - 1 has been executed.");
        }
    
        {
            System.out.println("non-static - 1 block has been executed.");
        }
    
        private static final Bread bread = new Bread();
        private static final Cheese cheese = new Cheese();
        static {
            System.out.println("static block - 2 has been executed.");
        }
        private static final Lettuce lettuce = new Lettuce();
    
        private final Bread bread1 = new Bread();
        {
            System.out.println("non-static - 2 block has been executed.");
        }
        private final Cheese cheese1 = new Cheese();
        private final Lettuce lettuce1 = new Lettuce();
    
        public static void run() {
            System.out.println("run static method.");
        }
    
        public TestOrder() {
            System.out.println("create object.");
        }
    
        public static void main(String[] args) {
            TestOrder.run();
            new TestOrder();
        }
    }
    
    /*
    output=
    static block - 1 has been executed.
    Bread()
    Cheese()
    static block - 2 has been executed.
    Lettuce()
    run static method.
    non-static - 1 block has been executed.
    Bread()
    non-static - 2 block has been executed.
    Cheese()
    Lettuce()
    create object.
     */

    之所以补充上面的代码,主要是为了强调:【实例域以及初始化块】的执行也是依赖于代码书写顺序的(自上而下),而并非随机执行或者按照某种优先顺序。不过,一些特殊情况可能需要另当别论。



  • 相关阅读:
    Execution Contexts (执行上下文)
    OOP—ECMAScript实现详解
    requireJS入门
    SqlServer 傲娇的表变量
    CSharp进阶 引用类型引发的血案
    CSharp进阶 都是请求惹的祸
    z-index问题
    js中事件(自定义事件)
    做了个后末日朋克风的梦
    昨晚的梦
  • 原文地址:https://www.cnblogs.com/xkxf/p/9372483.html
Copyright © 2020-2023  润新知