Java final变量虚拟机赋初值

final修饰的是常量,按理说常量只能赋一次值,可是为什么我调试发现虚拟机会给这个语句 public final double a;a赋值为0.0;
可是如果虚拟机已经为a赋值,就不应该强制用户再为a赋值,求各位大神指点

成员变量当未主动赋值时都有默认值