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");}@Overridepublic void mth() {{System.out.println("test2 method block");}System.out.println("test2");}
}