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
  • 相关阅读:
    Python处理Excel文件
    WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法
    深入理解Java虚拟机——读书笔记
    主要排序算法的Java实现
    LeetCode 67 Add Binary
    LeetCode 206 单链表翻转
    POJ 2388
    POJ 1207 3N+1 Problem
    POJ 1008 Maya Calendar
    关于指针的一些基本常识
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5878638.html
Copyright © 2011-2022 走看看