用static修饰的初始化块就称为静态初始化块。
需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
看一段代码:
public class helloworld { string name; // 声明变量name string sex; // 声明变量sex static int age;// 声明静态变量age // 构造方法 public helloworld () { system.out.println("通过构造方法初始化name"); name = "tom"; } // 初始化块 { system.out.println("通过初始化块初始化sex"); sex = "男"; } // 静态初始化块 static { system.out.println("通过静态初始化块初始化age"); age = 20; } public void show() { system.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age); } public static void main(string[] args) { // 创建对象 helloworld hello = new helloworld(); // 调用对象的show方法 hello.show(); }}
运行结果:
通过静态初始化块初始化age通过初始化块初始化sex通过构造方法初始化name姓名:tom,性别:男,年龄:20
因为静态初始化块在类加载的时候就执行了,所以先输出的静态初始化块中的输出内容。然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载的时候执行且只执行一次,所以在再次创建对象hello2的时候就没有执行静态初始化块了。
以上就是java开发之如何操作静态初始化块的详细内容。