静态初始化块

时间:2021-06-07 19:41:36

初始化块(用大括号括起来):

{

......

}

例如:

public class Hello{
String name;
//初始化块
{
name="Tom";
}
}

在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用static修饰初始化块,就称为静态初始化块。


注意:

(1)静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通成员变量。

(2)程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。

例如:

public class Hello {
String name1;
String name2;
static String name3;

//构造方法
public Hello(){
name1="Tom";
System.out.println("通过构造方法为变量name1赋值");
}

//初始化块
{
name2="Jack";
System.out.println("通过初始化块为变量num2赋值");
}

//静态初始化块
static{
name3="David";
System.out.println("通过静态初始化块为静态变量name3赋值");
}
public static void main(String[] args) {
Hello demo=new Hello();
System.out.println("name1:"+demo.name1);
System.out.println("name2:"+demo.name2);
System.out.println("name3:"+name3);

//由于静态初始化块只在类加载时执行一次,所以再次创建对象时不执行静态初始化块
Hello demo1=new Hello();
}
}

 
运行结果: 

通过静态初始化块为静态变量name3赋值
通过初始化块为变量num2赋值
通过构造方法为变量name1赋值
name1:Tom
name2:Jack
name3:David
通过初始化块为变量num2赋值
通过构造方法为变量name1赋值