静态变量一定要先声明后赋值

《编写高质量代码     改善java程序的151个建议》

public class ClientA {
    static
    {
        i = 100;
    }
    public static int  i =1;

    public static void main(String[] args) {

        System.out.println(i);

    }
}
------------------------------------
结果为1
-------------------------------------
public class ClientA {

    public static int  i =1;
    static
    {
        i = 100;
    }
    public static void main(String[] args) {

        System.out.println(i);

    }
}
------------------------------
结果100

JVM 先声明空间,然后再赋值的
int i = 100
再JVM中是分开执行的,等价于
int i ; //分配空间
i = 100 //赋值
静态变量是在类初始化时首先加载的,JVM会去查找类中所有的静态声明,然后分配空间,这是还没有赋值,只是进行了地址空间的分配,
之后JVM会根据类中的静态赋值(包括静态类赋值和静态块赋值)的先后顺序来执行。

原文地址:https://www.cnblogs.com/alway-july/p/6651580.html