遇到一个静态代码块对静态变量赋值,居然无效。就像下面的代码,看到输出的还是默认值,内心是崩溃的。
public class StaticLoad{
static {
i=666;
}
static int i=1;
// static {
// i=666;
// }
public static void main(String[] args)
{
System.out.println(StaticLoad.i);
}
}
debugger下发现赋值明明成功了,到了后面又进入定义变量赋值的步骤把值给覆盖了。
这个和加载顺序有关,把赋值代码块移动到变量后面,果然可以了。
静态代码块一定要在使用的静态变量的后面,否则静态变量初始化的时候会覆盖掉之前的赋值。