用于类的初始化操作,在静态初始化块中不能直接访问非static成员
静态初始化执行需要注意的事项:
注意:
-
上溯到Object类,先执行Object的静态初始化块,在向下执行子类的静态初始化块,直到指定的类的静态初始化块为止
-
构造方法执行顺序和上面一样
实例:
/**
* 测试static初始化块的用法
* @author Lucifer
*/
public class UserNo3 {
int id;
String name;
String pwd;
static String company;
//static初始化块
static
{
System.out.println("执行类的初始化工作");
company = "Lucifer's Company";
}
/*
这个语句块用static修饰了
在类初始化的时候执行
这时候是做类的初始化,不能去调用成员变量
如果有构造器则会在构造器之前执行
1.先加载类
2.弹到构造对象
*/
//创建一个方法
public static void printCompany(){
System.out.println(company);
return;
}
//main方法
public static void main(String[] args) {
//创建一个对象
// UserNo3 u3 = new UserNo3();
UserNo3 u3 = null;
/*
这里没有去创建对象也可以执行static类初始化的结构快
说明创建对象在类初始化之后
*/
}
}