准备阶段(Preparation),简言之,为类的静态变量分配内存,并将其初始化为默认值。
当一个类验证通过时,虚拟机就会进入准备阶段。在这个阶段,虚拟机就会为这个类分配相应的内存空间,并设置默认初始值。Java虚拟机为各类型变量默认的初始值如表所示。
类型 | 默认初始值 |
---|---|
byte | (byte)0 |
short | (short)0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0 |
char | \u0000 |
boolean | false |
reference | null |
注意:Java并不支持boolean类型,对于boolean类型,内部实现是int,由于int的默认值是0,故对应的,boolean的默认值是false。
注意:
1、这里不包含基本数据类型的字段用static final修饰的情况,因为false在编译的时候就会分配了,准备阶段显示赋值。
2、注意这里不会为实例变量分配初始化,类变量会分配在方法区中,而实例变量是会随着对象一起分配到Java堆中。
3、在这个阶段并不会像初始化阶段中那样会有初始化或者代码被执行。
梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。
网友评论