准备阶段是正式为类变量分配内存并设置变量初始值的阶段,这些变量所使用的内存都将在方法区中进行分配。这个时候进行内存分配的仅包括类变量(static修饰的变量),而不包括实例变量(实例变量将会在对象实例化时随着对象一起分配到java堆中)。这里说的初始值时数据类型的零值,而不是赋的值(这个操作在初始化阶段进行)

数据类型 零值
int 0
long 0L
short (short)0
char '\u0000'
byte (byte)0
boolean false
float 0.0f
double 0.0d
reference null

在通常情况下初始值时零值,一些其他的情况:

类字段的字段属性中存在ConstantValue属性,那在准备阶段变量的value就会被初始化为ConstantValue属性所指定的值:

public staticfinalint value = 1

results matching ""

    No results matching ""