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'
  • 相关阅读:
    nginx开启ssl模式
    安装nginx
    node的express框架
    使用Thumbnails工具对图片进行缩放,压缩
    正则
    VUE设置全局方法和属性
    js——XHR知识归纳
    页面资源加载过程
    Mongodb的增删改查
    Mongodb基本概念
  • 原文地址:https://www.cnblogs.com/nowl/p/12460749.html
Copyright © 2011-2022 走看看