前置条件
一、本文章讨论的成员变量
public static final String aa = "aa";
public static final Integer bb = 1;
public static final Students cc = new Students();
public static String aa1 = "aa";
public static Integer bb1 = 1;
public static String bb2 = Test36.AA2 +"AA3";
public static Students cc1 = new Students();
static final 修饰变量,如果可以在编译期推导出来,则在编译器分配内存及赋值,如果不能则在初始化赋值。
static 修改 在链接阶段的准备阶段分配内存并赋默认值(int 类型为0,Integer 为 null,对象 为 null)
然后再初始化时赋值。
父类静态成员变量0
父类静态代码块执行...
子类静态成员变量初始化a0
子类静态代码块执行了....
父类非静态成员变量1
父类非静态代码块执行...
父类无参构造方法执行
子类非静态成员变量初始化b0
子类非静态态代码块执行了....
子类的无参构造方法执行
Setter被执行——spring容器
类的初始化,参考