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中axios基础使用(一)_前端前端请求数据
    vue中使用font-awesome
    vue-cli 搭建项目中,img引用资源404
    前端工程化常用的基础lunix命令
    vue运行项目时network显示unavailable
    关于vue中node_modules中第三方模块的修改使用
    tableau extension 调研
    使用 certbot 自动给 nginx 加上 https
    前端常用:复制到剪切板和下载
    ssh 的一个坑
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5878638.html
Copyright © 2011-2022 走看看