1、结论:
静态代码块>构造代码块>构造函数的方法体
静态代码块只能访问静态方法,变量
2、细化构造函数体执行前会先执行:
2、1 执行父类的super()
2、2 初始化非静态变量(基本类型:0/false 引用类型/封装类型:null)
2、3 构造函数代码块
注意: this():构造函数第一行有this()的时候2、1/2、/2、3都不会执行
3、具体实例:
package Collection_Set;
public class Test11 {
public Test11() {
System.out.println("父类构造函数被调用");
}
public static void main(String[] args) {
}
}
package Collection_Set;
public class Static_Test extends Test11{
private static int a;
private int b;
static {
a=1000;
System.out.println("静态代码块执行:a="+a);//step1
}
{
a=100;
System.out.println("构造代码块执行:a="+a);//step4构造代码块被执行
}
public Static_Test() {
this("有参数被调用a="+a); //step2
System.out.println("无参被调用");//setp6
}
public Static_Test(String string) {
//step3父类无参构造函数被调用
//step4构造代码块被执行
System.out.println(string);//step5
}
public static void main(String[] args) {
Static_Test st=new Static_Test();
System.out.println(st.a);
}
}