在Java中,使用 { } 括起来的代码被称为代码块
局部代码块
在方法中出现,控制变量生命周期,及早释放,提高内存利用率
public static void main(String[] args){
{
int a=10;
}
System.out.println(a);//这里代码检查会报错
}
构造代码块
在类中方法外出现,抽取构造方法中的共性,每次创建对象都会执行,并且在构造方法前执行。
class Class1{
{
System.out.println("构造代码块");
}
public Class1() {
System.out.println("构造函数");
}
}
静态代码块
在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。一般用于加载驱动。
class Class1{
static {
System.out.println("静态代码块");
}
public Class1() {
System.out.println("构造函数");
}
}
构造代码块和静态代码块的特点
下面定义了一个类名为Class1的类,其中包括构造代码块、静态代码块和一个构造函数:
public class Demo {
public static void main(String[] args){
Class1 c1=new Class1();
Class1 c2=new Class1();
}
}
class Class1{
{
System.out.println("构造代码块");
}
static {
System.out.println("静态代码块");
}
public Class1() {
System.out.println("构造函数");
}
}
运行后得到以下结果
静态代码块
构造代码块
构造函数
构造代码块
构造函数
可以发现创建对象时初始化的顺序为静态代码块–>构造代码块–>构造函数。并且看到静态代码块仅在类加载的时候执行了一次。