有人可以解释一下为什么以下程序产生 10 和 0 ?我希望 10 和 10 ;
public final class Testing {
static int j = function1();
static int i = 10;
public static void main(String[] args) {
System.out.println(i);
System.out.println(j);
}
public static int function1() {
return i;
}
}
答案 0 :(得分:2)
static
变量按照它们出现在类源代码中的顺序进行初始化。因此,在初始化j
时,i
默认仍为0
,因此function1
会返回0
,而j
会初始化为0
}。
将j
初始化为0
后,i
初始化为10
,main
打印10
和0
}。
接下来,执行类的类变量初始值设定项和静态初始值设定项,或接口的字段初始值设定项,按文本顺序,就像它们是单个块一样。