Java 静态代码块是一种特殊的代码块,它使用 static 关键字修饰,放在类中方法外的位置。它的特点是:
- 静态代码块随着类的加载而执行,只执行一次,优先于构造器和普通代码块。
- 静态代码块可以用来初始化类的静态变量,也可以执行一些只需要进行一次的操作,如加载驱动、注册监听器等。
- 静态代码块不能访问非静态成员,因为非静态成员依赖于对象的创建,而静态代码块在对象创建之前就已经执行了。
- 一个类中可以有多个静态代码块,按照声明的先后顺序依次执行。
下面是一个简单的例子,演示了静态代码块的使用:
public class TestStatic {
// 静态变量
private static int a;
private static int b;
// 静态代码块
static {
System.out.println("静态代码块开始");
a = 10;
b = 20;
System.out.println("静态代码块结束");
}
// 构造器
public TestStatic() {
System.out.println("构造器开始");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("构造器结束");
}
// 主方法
public static void main(String[] args) {
System.out.println("主方法开始");
TestStatic ts1 = new TestStatic();
TestStatic ts2 = new TestStatic();
System.out.println("主方法结束");
}
}
运行结果如下:
静态代码块开始
静态代码块结束
主方法开始
构造器开始
a = 10
b = 20
构造器结束
构造器开始
a = 10
b = 20
构造器结束
主方法结束
从运行结果可以看出,静态代码块只执行了一次,且在主方法之前执行,说明它随着类的加载而执行。同时,它对静态变量 a 和 b 进行了初始化,这些变量在构造器中被访问。
总结:Java 静态代码块是一种方便、高效、安全的初始化类的方式,可以在类加载时执行一些必要的操作,提高程序的性能和可读性。