Java种的初始化顺序
Java类的初始化顺序
今天看了类的初始化顺序,于是动手测试,发现结果会有变化......
今天看了类的初始化顺序,于是动手测试,发现结果会有变化......
package com.xushiyun; /** * 测试 * * */ class A{ static{ System.out.println("当前执行位置"+"静态代码块AAAA"); } { System.out.println("当前执行位置"+"普通代码块AAAA"); } A(){ System.err.println("当前执行位置"+this.getClass().getName()+"默认构造器"); } } class B{ static{ System.out.println("当前执行位置"+"静态代码块BBBB"); } { System.out.println("当前执行位置"+"普通代码块BBBB"); } B(){ System.err.println("当前执行位置"+this.getClass().getName()+"默认构造器"); } } class C{ static{ System.out.println("当前执行位置"+"静态代码块CCCC"); } { System.out.println("当前执行位置"+"普通代码块CCCC"); } C(){ System.err.println("当前执行位置"+this.getClass().getName()+"默认构造器"); } } class D{ static{ System.out.println("当前执行位置"+"静态代码块DDDD"); } { System.out.println("当前执行位置"+"普通代码块DDDD"); } D(){ System.err.println("当前执行位置"+this.getClass().getName()+"默认构造器"); } } class Bird{ static{ System.out.println("当前执行位置"+"Bird静态代码块"); }; { System.out.println("当前执行位置"+"Bird普通代码块"); } public Bird() { System.err.println("当前执行位置"+this.getClass().getName()+"默认构造器"); } }; class Person{ D d = new D(); static Bird bird = new Bird(); static { System.out.println("当前执行位置"+"Person静态代码块"); new A(); System.out.println("当前执行位置"+"Person静态代码块-------结束"); }; { System.out.println("当前执行位置"+"Person普通代码块"); new B(); System.out.println("当前执行位置"+"Person普通代码块---------结束"); } Person(){ System.err.println("当前执行位置"+this.getClass().getName()+"默认构造器"); new C(); System.err.println("当前执行位置"+this.getClass().getName()+"默认构造器----结束"); } } public class JavaTest { public static void main(String[] args) { new Person(); } }