Java中的代码块主要有三种类型:普通代码块、静态代码块、构造代码块。它们的用途和执行时机各不相同。
-
普通代码块:在方法内部定义,使用一对大括号
{}
包围的代码片段。它的作用域限定在大括号内,每当程序执行到该代码块时就会执行其中的代码。 -
静态代码块:使用
static
关键字定义,属于类级别的代码块。静态代码块在类被加载到JVM时执行,且只执行一次。常用于初始化静态变量。 -
构造代码块:没有任何前缀修饰,直接使用一对大括号
{}
定义在类中。每次创建类的实例时,构造代码块都会执行,并且在构造方法执行前执行。常用于所有构造方法共享的代码。
下面是这三种代码块的示例:
在这个例子中,当BlockExample
类被加载时,静态代码块首先执行。然后,每次使用new
关键字创建BlockExample
类的实例时,构造代码块会在构造方法之前执行。最后,当调用method
方法时,其中的普通代码块会执行。
public class BlockExample {
// 静态代码块
static {
System.out.println("静态代码块执行");
// 初始化静态变量或执行仅需执行一次的代码
}
// 构造代码块
{
System.out.println("构造代码块执行");
// 执行所有构造方法共享的初始化代码
}
// 构造方法
public BlockExample() {
System.out.println("构造方法执行");
}
public void method() {
// 普通代码块
{
int localVariable = 10;
System.out.println("普通代码块执行,局部变量值为: " + localVariable);
}
}
public static void main(String[] args) {
BlockExample example = new BlockExample();
example.method();
}
}
class test2 extends test1 {
static {
System.out.println("test2 static");
}
public static void main(String[] args) {
test2 t = new test2();
t.mth();
test2 t2 = new test2();
t2.mth();
}
{
System.out.println("test2 block");
}
@Override
public void mth() {
{
System.out.println("test2 method block");
}
System.out.println("test2");
}
}