- 您在帖子中显示的块不是空块,而是静态初始化器。它用于为类的静态变量提供非平凡的初始化
- 在初始化期间使用的局部变量进入堆栈,但从堆分配的对象除外
- 您不能访问静态变量,
x
因为您没有声明它。而是x
在静态初始化程序中声明了局部变量。
如果要创建
x静态变量,然后在静态初始化块中对其进行初始化,请执行以下操作:
private static int x;static { x = 5;}在这种情况下,简单的初始化语法最有效:
private static int x = 5;
初始化程序块保留用于更复杂的工作,例如,当您需要使用循环初始化结构时:
private static List<List<String>> x = new ArrayList<List<String>>();static { for (int i = 0 ; i != 10 ; i++) { x.add(new ArrayList<String>(20)); }}


