Java 类中的初始化顺序一

来源:互联网 发布:aix 安装软件 编辑:程序博客网 时间:2024/05/21 17:04
public class Demo {    public static String A = "静态变量";    public String B = "定义时给实例变量赋值";    public String C;    static{        System.out.println("执行静态代码块前调用静态变量(只能调用静态变量):" + A);        System.out.println("执行静态代码块");        A = "执行静态代码块时给静态变量赋值";        System.out.println("执行静态代码块后调用静态变量(只能调用静态变量):" + A);        System.out.println("-----------------------------------------");    }    {        System.out.println("构造代码块执行前调用静态变量:" + A);        System.out.println("构造代码块执行前调用定义时赋值的实例变量:" + B);        System.out.println("构造代码块执行前调用定义时未赋值的实例变量:" + C);        System.out.println("执行构造代码块");        A = "执行构造代码块时给静态变量赋值";        B = "执行构造代码块时给已赋值的实例变量赋值";        C = "执行构造代码块时给未赋值的实例变量赋值";        System.out.println("构造代码块执行后调用静态变量:" + A);        System.out.println("构造代码块执行后调用定义时赋值的实例变量:" + B);        System.out.println("构造代码块执行后调用定义时未赋值的实例变量:" + C);        System.out.println("-----------------------------------------");    }    public Demo(){        System.out.println("构造方法执行前调用静态变量:" + A);        System.out.println("构造方法执行前调用定义时赋值的实例变量:" + B);        System.out.println("构造方法执行前调用定义时未赋值的实例变量:" + C);        System.out.println("执行构造方法");        A = "执行构造方法时给静态变量赋值";        B = "执行构造方法时给已赋值的实例变量赋值";        C = "执行构造方法时给未赋值的实例变量赋值";        System.out.println("构造方法执行后调用静态变量:" + A);        System.out.println("构造方法执行后调用定义时赋值的实例变量:" + B);        System.out.println("构造方法执行后调用定义时未赋值的实例变量:" + C);        System.out.println("-----------------------------------------");    }    public static void main(String[] args) {        {            System.out.println("执行普通代码块前调用静态变量(只能调用静态变量):" + A);            System.out.println("执行普通代码块");            A = "执行普通代码时给静态变量赋值";            System.out.println("执行普通代码块后调用静态变量(只能调用静态变量):" + A);            System.out.println("-----------------------------------------");        }        new Demo();    }}

结果:

执行静态代码块前调用静态变量(只能调用静态变量):静态变量执行静态代码块执行静态代码块后调用静态变量(只能调用静态变量):执行静态代码块时给静态变量赋值-----------------------------------------执行普通代码块前调用静态变量(只能调用静态变量):执行静态代码块时给静态变量赋值执行普通代码块执行普通代码块后调用静态变量(只能调用静态变量):执行普通代码时给静态变量赋值-----------------------------------------构造代码块执行前调用静态变量:执行普通代码时给静态变量赋值构造代码块执行前调用定义时赋值的实例变量:定义时给实例变量赋值构造代码块执行前调用定义时未赋值的实例变量:null执行构造代码块构造代码块执行后调用静态变量:执行构造代码块时给静态变量赋值构造代码块执行后调用定义时赋值的实例变量:执行构造代码块时给已赋值的实例变量赋值构造代码块执行后调用定义时未赋值的实例变量:执行构造代码块时给未赋值的实例变量赋值-----------------------------------------构造方法执行前调用静态变量:执行构造代码块时给静态变量赋值构造方法执行前调用定义时赋值的实例变量:执行构造代码块时时给已赋值的实例变量赋值构造方法执行前调用定义时未赋值的实例变量:执行构造代码块时时给未赋值的实例变量赋值执行构造方法构造方法执行后调用静态变量:执行构造方法时给静态变量赋值构造方法执行后调用定义时赋值的实例变量:执行构造方法时给已赋值的实例变量赋值构造方法执行后调用定义时未赋值的实例变量:执行构造方法时给未赋值的实例变量赋值-----------------------------------------

初始化顺序:
静态变量—–>静态代码块—–>普通代码块—–>构造代码块—–>构造方法

0 0
原创粉丝点击