1.实例初始化块
实例初始化块在每次创建类的实例时执行。这些代码块位于大括号{}
内,位置通常在类定义中的字段定义之后。实例初始化块可以用来初始化那些不能在字段定义时直接初始化的实例变量。
class Example {
int x;
{
x = 10; // 实例初始化块
}
}
2.静态初始化块
静态初始化块用于初始化静态变量。这类块在类第一次加载到JVM时执行,并且只执行一次。静态块使用static
关键字定义。
class Example {
static int y;
static {
y = 100; // 静态初始化块
}
}
3.方法中的局部代码块
在方法内部,可以定义局部代码块来限制某些变量的作用域。这种块通常用于控制变量的生命周期,或者是简单地为了逻辑上的分组。
void method() {
int a = 10;
{
int b = 20; // 局部代码块
System.out.println(a + b);
}
// b 的作用域结束
}
4.同步代码块
同步代码块用于多线程编程中,以控制对共享资源的并发访问。通过synchronized
关键字标示,这确保了同一时间只有一个线程可以执行该代码块。
class Example {
public void method() {
synchronized(this) {
// 只有获得了当前对象的锁的线程可以执行这个代码块
// 代码执行相关操作
}
}
}
5.try-catch-finally 和 try-with-resources 块
这些块用于异常处理。try-catch-finally
块允许你处理异常情况,而finally
块无论是否抛出异常都会执行。try-with-resources
块则用于自动管理资源,例如文件和网络连接。
try {
// 可能会抛出异常的代码
} catch (ExceptionType e) {
// 异常处理代码
} finally {
// 清理代码,无论是否抛出异常都会执行
}
try (Resource res = new Resource()) {
// 使用资源
} catch (Exception e) {
// 资源异常处理
}
// 资源自动关闭
这些代码块的使用可以大大增强Java程序的结构化、异常处理能力及多线程安全性。