我想知道使用空块的目的是什么。例如,
static{
int x = 5;
}
public static void main (String [] args){
int i = 10;
{
int j = 0 ;
System.out.println(x); // compiler error : can't find x ?? why ??
System.out.println(i); // this is fine
}
System.out.println(j); //compiler error : can't find j
}
有人可以解释吗
stack
上进行? static variable x
? 最佳答案
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));
}
}