6.ConstantValue属性
ConstantValue属性的作用是通知虚拟机自动为静态变量赋值。只有被static关键字修饰的变量才可以使用这项属性。在Java程序里类类似“int x = 123“和”static int x = 123”这样的变量定义非常常见,但虚拟机对这两种变量赋值的方法和时刻有所不同。对于非static类型的变量(也就是实例变量)的赋值是在实例构造器<init>方法中进行的;对于类变量,则有两种式可以选择:赋值在类构造器<clinit>方法中进行,或者使用ConstantValue属性来赋值。目前Sun Javac编译器的选择是:如果同时使用final和static来修改一个变量,并且这个变量的数据类型是基本类型或java.lang.String的话,就生成ConstantValue属性来进行初始化,如果这个变量没有被final修饰,或者并非基本类型或字符串,则选择在<client>类构造器中进行初始化。ConstantValue属性表结构如下: