zoukankan      html  css  js  c++  java
  • 类初始化顺序执行结果

     以下程序运行结果是:

    class Y {
        public Y() {
            System.out.println("Y的构造方法");
        }
    
        X x = new X();
        {
            System.out.println("Y的构造代码块");
        }
    
        static {
            System.out.println("Y类的静态代码块初始化");
        }
        static int i = 11;
        static {
            i = 22;
            System.out.println("Y类的静态代码块初始化,且静态变量i的值是:" + i);
        }
    }
    
    class X {
        public X() {
            System.out.println("X的构造方法");
        }
    
        {
            System.out.println("X的构造代码块");
        }
        static {
            System.out.println("X类的静态代码块初始化");
        }
        static int i = 1;
        static {
            i = 2;
            System.out.println("X类的静态代码块初始化,且静态变量i的值是:" + i);
        }
    }
    
    public class Z extends Y {
    
        public static void main(String[] args) {
            new Z();
        }
    
        public Z() {
            System.out.println("Z的构造方法");
        }
    
        X x = new X();
        {
            System.out.println("Z的构造代码块");
        }
        static {
            System.out.println("Z类的静态代码块初始化");
        }
        static int i = 111;
        static {
            i = 222;
            System.out.println("Z类的静态代码块初始化,且静态变量i的值是:" + i);
        }
    }

    输出结果:

    Y类的静态代码块初始化
    Y类的静态代码块初始化,且静态变量i的值是:22
    Z类的静态代码块初始化
    Z类的静态代码块初始化,且静态变量i的值是:222
    X类的静态代码块初始化
    X类的静态代码块初始化,且静态变量i的值是:2
    X的构造代码块
    X的构造方法
    Y的构造代码块
    Y的构造方法
    X的构造代码块
    X的构造方法
    Z的构造代码块
    Z的构造方法

    初始化过程: 
    1. 初始化父类中的静态成员变量和静态代码块(静态成员变量和静态代码块两者按在类中声明的先后顺序顺序执行) ; 
    2. 初始化子类中的静态成员变量和静态代码块(静态成员变量和静态代码块两者按在类中声明的先后顺序顺序执行) ; 
    3.初始化父类的普通成员变量和代码块,再执行父类的构造方法(其中被执行的父类构造方法和子类构造方法参数数量类型一致,普通成员变量和代码块两者按在类中声明的先后顺序顺序执行),;
    4.初始化子类的普通成员变量和代码块,再执行子类的构造方法(普通成员变量和代码块两者按在类中声明的先后顺序顺序执行); 
     
    另一个静态类初始化顺序题:http://www.cnblogs.com/SaraMoring/p/5846610.html
  • 相关阅读:
    vue+vuex构建单页应用
    vue如何做分页?
    cookie和session的原理机制
    经常遇到js的面试题
    CSS浏览器兼容性问题解决方法总结
    前端性能优化----yahoo前端性能团队总结的35条黄金定律
    bom对象
    正则表达式
    JavaScript
    常见浏览器bug以及解决方法
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5878638.html
Copyright © 2011-2022 走看看