前置条件
一、本文章讨论的成员变量
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容器
类的初始化,参考
https://blog.csdn.net/aoxiang_yuanfang/article/details/110329375?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-110329375-blog-5293427.235^v38^pc_relevant_sort_base3&spm=1001.2101.3001.4242.1&utm_relevant_index=3