Java 语言中允许类中定义一个特殊的块,这个块不属于任何方法,也没有任何其它修饰符修饰,就是简简单单的在一个大括号 {}
里包含了一些代码,如下面所示,你知道它用来做什么的吗?
import java.io.*; public class JavaTester { { System.out.println("Common part of constructors invoked !!"); } public JavaTester() { System.out.println("Default Constructor invoked"); } public JavaTester(int x) { System.out.println("Parametrized constructor invoked"); } public static void main(String arr[]) { JavaTester obj1, obj2; obj1 = new JavaTester(); obj2 = new JavaTester(0); } }
编译运行以上代码,输出结果如下
[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester Common part of constructors invoked !! Default Constructor invoked Common part of constructors invoked !! Parametrized constructor invoked
大家看到下面的代码没有,这个用大括号扩起来的特殊块,在 Java 语言中,称之为 「 初始化块 」。
{ System.out.println("Common part of constructors invoked !!"); }
初始化块 用于声明和初始化类的各种构造函数的公共部分。简单来说,就是可以把一个类的所有的构造函数的公共部分抽出来,放到一个初始化块中。这样,代码就更简洁明了了。
从上面的输出结果中可以看到,只要调用类的任何一个构造函数,都会自动调用这个类的初始化块。而且,是在构造函数之前调用。
初始化块的位置无关紧要,因为不管放在哪里,它都会在构造函数调用之前被调用。
后记
Java 中还存在一个静态块,就是在大括号之前有一个 static
关键字。相关详情,你可以访问我们的 Java 中的静态块
目前尚无回复