此副本存储在哪里?
副本(静态变量)存储在“永久生成”部分中,但是如果使用Java8,则“永久生成”部分将不再存在。静态变量和静态方法是反射数据的一部分,它们是与类相关的数据,与实例无关。
对象如何访问该副本?
您创建的类(对象)的每个实例都有对该类的引用。
该副本何时创建?
它是在加载类时在运行时创建的:这是在首次引用该类时由JVM的类加载器完成的。
静态变量属于该类,而不属于该类的实例。 您的直觉是正确的-无论创建多少对象,您只有一个副本。
您可以使用类的名称访问静态变量,如以下示例所示:
class Static { static int staticField;}public class UseStatic { public static void main(String[] args) { System.out.println(Static.staticField); }}静态字段对于创建某种类常量很有用。
最后,要轻松初始化特定类的静态字段,可以使用静态初始化块。
资料来源 :Java大学课程,Java官方文档



