在Java中,static
关键字用于声明静态成员(包括静态变量、静态方法和静态代码块)。当类被加载到Java虚拟机(JVM)时,静态成员的行为如下:
-
静态变量:静态变量在类加载时被初始化,只会被初始化一次。它们属于类级别,而不是实例级别。这意味着,无论创建了多少个类的实例,静态变量都只有一个副本。在内存中,静态变量存储在方法区(或称为静态区),与类的实例变量分开存储。
-
静态方法:静态方法可以在没有创建类实例的情况下直接调用。它们属于类级别,而不是实例级别。在内存中,静态方法存储在方法区(或称为静态区),与类的实例变量分开存储。当调用静态方法时,JVM不需要创建类的实例,而是直接通过类名和方法名来调用。
-
静态代码块:静态代码块在类加载时执行,且只执行一次。它们通常用于初始化静态变量。静态代码块按照在类中出现的顺序执行。在内存中,静态代码块存储在方法区(或称为静态区),与类的实例变量分开存储。
总结一下,当Java类被加载时,静态成员会被初始化并存储在方法区。静态变量和静态代码块在类加载时执行,而静态方法可以在没有创建类实例的情况下直接调用。