关于java的非法向前摘引

关于java的非法向前引用
下面的注释这行代码为什么会报错:非法向前引用?
这个时候我debug都可以看到i的值是100.为什么不能打印出来呢?


public class Test {
    static {
        i = 100;
//        System.out.println("================================"+i);
    }
    public static int i=10;
    public static void main(String[] args) {
        System.out.println("此时 i 的输出为" + i);
    }
}


1 楼 wingware 昨天  
public class Test {
	public static int i = 10;
	static {
		i = 100;
	}
	public static void main(String[] args) {
		System.out.println("此时 i 的输出为" + i);
	}
}

改成这样子,输出来的就是100了...
由此得出结论。
ClassLoader时
1.先检查static属性的声明
2.执行static{]语句块
3.给static属性赋值
2 楼 freezingsky 昨天  
这个问题属于数据初始化顺序方面。