zoukankan      html  css  js  c++  java
  • java 静态资源,非静态资源,父类子类,构造方法之间的初始化循序

    java面试经常被问静态资源,非静态资源,父类子类,构造方法之间的执行顺序。下面添加两个类做个测试

    class Parent {
        // 静态变量
        public static String p_StaticField = "父类--静态变量";
        // 变量(其实这用对象更好能体同这一点,如专门写一个类的实例)
    
        //如果这个变量放在初始化块的后面,是会报错的,因为你根本没有被初始化
        public String p_Field = "父类--变量";
        // 静态初始化块
        static {
            System.out.println(p_StaticField);
            System.out.println("父类--静态初始化块");
        }
        // 初始化块
        {
            System.out.println(p_Field);
            System.out.println("父类--初始化块");
        }
    
        // 构造器
        public Parent() {
            System.out.println("父类--构造器");
        }
    }
    public class SubClass extends Parent {
        // 静态变量
        public static String s_StaticField = "子类--静态变量";
        // 变量
        public String s_Field = "子类--变量";
        // 静态初始化块
        static {
            System.out.println(s_StaticField);
            System.out.println("子类--静态初始化块");
        }
        // 初始化块
        {
            System.out.println(s_Field);
            System.out.println("子类--初始化块");
        }
    
        // 构造器
        public SubClass() {
            //super();
            System.out.println("子类--构造器");
        }
    
    }
     // 程序入口
        public static void main(String[] args) {
            System.out.println("*************in main***************");
            new SubClass();
            System.out.println("*************second subClass***************");
            new SubClass();
        }

    两次初始化子类SubClass结果如下,验证了类的初始化循序的同时可以得出静态资源只会在类的第一次初始化加载的结论。

    Connected to the target VM, address: '127.0.0.1:11839', transport: 'socket'
    父类--静态变量
    父类--静态初始化块
    子类--静态变量
    子类--静态初始化块
    *************in main***************
    父类--变量
    父类--初始化块
    父类--构造器
    子类--变量
    子类--初始化块
    子类--构造器
    *************second subClass***************
    父类--变量
    父类--初始化块
    父类--构造器
    子类--变量
    子类--初始化块
    子类--构造器
    Disconnected from the target VM, address: '127.0.0.1:11839', transport: 'socket'
  • 相关阅读:
    BZOJ1406: [AHOI2007]密码箱 数论
    BZOJ5188: [Usaco2018 Jan]MooTube 并查集+离线处理
    BZOJ2662: [BeiJing wc2012]冻结 spfa+分层图
    BZOJ1297: [SCOI2009]迷路 矩阵快速幂
    BZOJ4887: [Tjoi2017]可乐 矩阵快速幂
    BZOJ5168: [HAOI2014]贴海报 线段树
    开发富文本编辑器的一些经验教训
    数据可视化的发展前景、商业/职业前景?
    市场调研中如何做数据分析?
    当前火热的短视频,背后有着哪些黑科技技术?
  • 原文地址:https://www.cnblogs.com/nowl/p/12460749.html
Copyright © 2011-2022 走看看