public static String strA = "③、静态语句块只加载一次";
public static void main(String[] args) {
System.out.println("②、main方法开始执行");
new Bread();
strA = "成员变量被改变,但Bread类中的静态语句块并未再次加载";
//注意:上面一句没有被打印,说明静态语句块只加载一次
new Bread();
StaticMethod();
}
public static Before strB = new Before();
public static void StaticMethod() {
System.out.println("⑥本记录出现在最后说明static方法不会自动执行");
}
static class Bread {
public Bread() {
System.out.println("⑤、Bread类被加载两次,③只出现一次说明③");
}
Water water = new Water();
//静态语句块先于方法被加载
static {
System.out.println(strA);
}
}
static class Water {
public Water() {
System.out.println("④、变量会在任何方法(包括构造器)调用之前得到初始化");
}
}
static class Before {
public Before() {
System.out.println("①、static成员变量在方法执行之前初始化");
}
}
①、static成员变量在方法执行之前初始化
②、main方法开始执行
③、静态语句块只加载一次
④、变量会在任何方法(包括构造器)调用之前得到初始化
⑤、Bread类被加载两次,③只出现一次说明③
④、变量会在任何方法(包括构造器)调用之前得到初始化
⑤、Bread类被加载两次,③只出现一次说明③
⑥本记录出现在最后说明static方法不会自动执行