部分摘抄自:https://blog.youkuaiyun.com/qq_36522306/article/details/80584595
目录
我们知道java中类的生命周期为装载、连接、初始化、使用和卸载五个过程,如下图所示:
2. 连接:
(2)准备:
1. 准备阶段是正式为类变量(static修饰)分配内存并且设置初始值多阶段,这些变量所使用的内存将在方法区中进行分配。
2. 实例变量将会在对象实例化多时候随着对象一起分配在java堆中。
3. 初始值通常情况下是数据类型的零值,假设定义:
public static int value = 123;
那么value在准备阶段后的初始值为0,而不是123,把value赋值为123的动作在初始化时才会执行。
如果类变量存在ConstantValue属性,那么在准备阶段value就会被初始化为ConstantValue属性所指定的值,比如:
public static final int value = 123;
编译时javac将会把value生成ConstantValue属性,在准备阶段虚拟机将会根据ConstantValue的设置将value赋值为123.