- ConstantValue属于属性表集合中的一个属性,属性表集合中一共有21个不同属性。
- ConstantValue属性的使用位置:字段表;含义:final关键字定义的常量值。
- ConstantValue属性作用:通知虚拟机自动为静态变量赋值。
int x =123;
static int x = 123;
- 对虚拟机来说上面两种变量赋值的方式和时刻都有所不同。
- 非static类型变量(实例变量)
- 赋值是在实例构造器<init>方法中进行的。
- static类型变量(类变量)
- 有两种选择:在类构造器<clinit>方法或者使用ConstantValue属性。
- 同时使用final 、static来修饰的变量(常量),并且这个变量的数据类型是基本类型或者String类型,就生成ConstantValue属性来进行初始化。
- 没有final修饰或者并非基本类型及String类型,则选择在<clinit>方法中进行初始化。
- 有两种选择:在类构造器<clinit>方法或者使用ConstantValue属性。