1、无继承情况下初始化

class Sample {
	Sample(String s) {
		System.out.println(s);
	}

	Sample() {
		System.out.println("Sample默认构造函数被调用");
	}
}

class Test1 {
	Sample sam1 = new Sample("sam1成员初始化");
	static Sample sam = new Sample("静态成员sam初始化");
	static {
		System.out.println("static块执行");
		if (sam == null)
			System.out.println("sam is null");
		sam = new Sample("静态块内初始化sam成员变量");
	}

	Test1() {
		System.out.println("Test默认构造函数被调用");
	}

}

public class Test {
	public static void main(String args[]) {
		Test1 t = new Test1();
	}
}

输出:



静态成员sam初始化     -----静态成员初始化


static块执行          -----静态块被执行


静态块内初始化sam成员变量 ----静态块执行


sam1成员初始化      -----普通成员初始化


Test默认构造函数被调用  -----构造函数执行


说明:静态成员先初始化(根据定义的顺序);成员初始化;构造函数




2、有继承情况下初始化


class Test {
	static {
		System.out.println("父类static 块 1  执行");
	}
	static Sample staticSam1 = new Sample("父类 静态成员staticSam1初始化");
	Sample sam1 = new Sample("父类 sam1成员初始化");
	static Sample staticSam2 = new Sample("父类 静态成员staticSam2初始化");
	static {
		System.out.println("父类 static 块 2  执行");
	}

	Test() {
		System.out.println("父类 Test默认构造函数被调用");
	}

	Sample sam2 = new Sample("父类 sam2成员初始化");

}

class TestSub extends Test {
	static Sample staticSamSub = new Sample("子类 静态成员staticSamSub初始化");

	TestSub() {
		System.out.println("子类 TestSub 默认构造函数被调用");
	}

	Sample sam1 = new Sample("子类 sam1成员初始化");
	static Sample staticSamSub1 = new Sample("子类 静态成员staticSamSub1初始化");

	static {
		System.out.println("子类 static 块  执行");
	}
	Sample sam2 = new Sample("子类 sam2成员初始化");
}

输出:


父类 static 块 1  执行


父类 静态成员staticSam1初始化


父类 静态成员staticSam2初始化


父类 static 块 2  执行


                        --------父类静态成员初始化


子类 静态成员staticSamSub初始化


子类 静态成员staticSamSub1初始化


子类 static 块  执行


                        -------子类静态成员初始化


父类 sam1成员初始化


父类 sam2成员初始化


父类 Test默认构造函数被调用       


                        -------父类普通成员初始化和构造函数执行


子类 sam1成员初始化


子类 sam2成员初始化


子类 TestSub 默认构造函数被调用


                        -------父类普通成员初始化和构造函数执行


说明:继承体系的所有静态成员初始化(先父类,后子类);父类初始化完成(普通成员的初始化(包括代码块,就是直接用大括号包含的)-->构造函数的调用);子类初始化(普通成员-->构造函数)




java初始化过程:


pljava 开发插件提示初始化类失败 java sampler初始化操作_pljava 开发插件提示初始化类失败