Java 静态语句块
Java里静态语句块是优先对象存在,也就是优先于构造方法存在,我们通常用来做只创建一次对象使用,类似于单列模式而且执行的顺序是:
父类静态语句块 -> 子类静态语句块 -> 父类构造方法 -> 子类构造方法
静态语句块可以看作在类加载的时候执行,且只执行一次。
验证程序
public class TestMethod extends BaseClass {
static int a;
public TestMethod() {
super();
System.out.println("constructor of exec");
}
static {
String a1="12";
String a2="22";
a=Integer.parseInt(a1)+Integer.parseInt(a2);
System.out.println("chilren static block");
}
public static void main(String[] args) {
System.out.println(TestMethod.a);
TestMethod.a=45;
new TestMethod();
System.out.println(TestMethod.a);
new TestMethod();
System.out.println(TestMethod.a);
}
}
class BaseClass{
static int a;
static {
String a1="10";
String a2="20";
a=Integer.parseInt(a1)+Integer.parseInt(a2);
System.out.println("baseClass static block");
System.out.println(a);
}
public BaseClass(){
System.out.println("Base class constructor of exec");
System.out.println(BaseClass.a);
BaseClass.a=300;
System.out.println(BaseClass.a);
}
}
Java 静态语句块在类加载时执行且仅执行一次,优先于构造方法。它们常用于实现单例模式,执行顺序为:父类静态语句块 -> 子类静态语句块 -> 父类构造方法 -> 子类构造方法。通过验证程序可以进一步理解这一特性。
307

被折叠的 条评论
为什么被折叠?



