static{}中的代码表示是在类装载的时候执行一次,且仅执行一次;
我举个例子吧:
public class Example{
static String stra = new String("hello world");
{
stra = "hello";
System.out.println("初始块被调用");
}
static{
stra = "STATIC";
System.out.println("静态初始块被调用");
}
public Example(){
stra = "Welcome To Contructor";
System.out.println("构造函数被调用");
}
public void show(){
System.out.println(stra);
}
public static void main(String [] args){
Example example = new Example();
example.show();
}
}
// 运行结果:
// 静态初始块被调用
// 初始块被调用
// 构造函数被调用
// Welcome To Constructor
但是单个{}是什么意思?去掉它就报错!
这是块初始化,块初始化在对象产生之前就完成.
如果在块初始化 前用关键字static 修饰,则表明是静态块初始化,静态初始化在类被调用时就完成.所以静态初始更优先于非静态块初始化!
用{}这个之后,就可以执行一些方法了,如果没有,只能定义属性或者方法,而且执行这个的话在类初始化的时候就会执行。至于去掉{}不能运行那是因为System.out.println()要放到方法内部执行,或者静态初始化块