静态代码块无法对静态变量赋值的原因

tech2022-08-06  167

遇到一个静态代码块对静态变量赋值,居然无效。就像下面的代码,看到输出的还是默认值,内心是崩溃的。

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下发现赋值明明成功了,到了后面又进入定义变量赋值的步骤把值给覆盖了。

这个和加载顺序有关,把赋值代码块移动到变量后面,果然可以了。

 

静态代码块一定要在使用的静态变量的后面,否则静态变量初始化的时候会覆盖掉之前的赋值。

 

最新回复(0)