以下代码成功编译。根据我的理解,变量必须在使用前声明,那么究竟发生了什么静态初始化后声明静态变量
class A {
static {
y=20;
z=10;
}
static int z;
static int y=30;
{
w=10;
}
int w;
public static void main(String args[]){
System.out.println(y);
}
}
在阅读注释后修改了问题。 这里的输出是30. 因此变量声明首先发生,然后所有初始化语句按照外观顺序执行
*“根据我的理解,变量必须在使用之前声明”*为什么您认为块和变量的位置在这里很重要? – Tom
*本地*变量必须在第一次使用之前声明。字段,不是很多... –
这两个链接都不作为重复使用,但他们(隐含地)说,字段的位置可能会有所不同:[实例变量声明的放置](// stackoverflow.com/q/218573) // [Java最佳实践 - 是否在类变量之前声明构造函数是一件坏事?](// stackoverflow.com/q/10264447) – Tom