📅  最后修改于: 2020-03-22 13:01:35             🧑  作者: Mango
与C++不同,Java支持一个特殊的块,称为静态块(也称为static子句),该块可用于类的静态初始化。静态块中的代码仅执行一次:第一次创建该类的对象或第一次访问该类的静态成员(即使您从未创建该类的对象)。例如,检查以下Java程序的输出。
// 文件名: Main.java
class Test {
static int i;
int j;
// 静态块
static {
i = 10;
System.out.println("静态块被调用 ");
}
// 静态块结束
}
class Main {
public static void main(String args[]) {
// 尽管我们没有类的对象,我们还是可以调用静态块
System.out.println(Test.i);
}
}
输出:
静态块被调用
10
同样,静态块在构造函数之前执行。例如,检查以下Java程序的输出。
// 文件名: Main.java
class Test {
static int i;
int j;
static {
i = 10;
System.out.println("静态块被调用");
}
Test(){
System.out.println("构造函数被调用");
}
}
class Main {
public static void main(String args[]) {
// 尽管我们有两个对象,静态块只会被调用一次
Test t1 = new Test();
Test t2 = new Test();
}
}
输出:
静态块被调用
构造函数被调用
构造函数被调用
如果我们想为每个对象执行一些代码怎么办?
我们在Java中使用Initializer Block。