static JVM加载一个类后,该类的所有静态变量的值仍然是默认值,直到有一个线程访问该类的任意一个static变量后,这个类才被初始化(static{}被执行),类中的所有static变量被赋初始值 在多线程环境下,保证即使在未使用其它同步机制的情况下也总能读取到一个类的static变量的初始值(不是默认值),但可见性仅限于线程初次读取 final 多线程环境下,一个类中的final变量都是初始值(不是默认值)