Java变量值初始化

0 java variables initialization

我是Java的初学者,努力通过变量初始化来理解以下问题,非常感谢专家的帮助.

考虑到考试的代码:

public class SimpleCalc {
    public int value;
    public void calculate() { value += 7; }
}
Run Code Online (Sandbox Code Playgroud)

public class MultiCalc extends SimpleCalc {
    public void calculate() { value -= 3; }
    public void calculate(int multiplier) {
        calculate();
        super.calculate();
        value *= multiplier;
    }
    public static void main (String[] args) {
        MultiCalc calculator = new MultiCalc ();
        calculator.calculate(2);
        System.out.println(calculator.value);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的理解是,这需要抛出运行时异常,因为变量"value"永远不会获得分配给它的实际初始值(public int value;).但是,代码的工作和行为就像变量"value"被赋值为0(与public int value = 0;相同).有人可以解释一下,为什么会这样?非常感谢

Per*_*ror 8

.但是,代码的工作和行为就像变量"value"被赋值为0(与public int value = 0;相同).

java中的实例变量获取默认值.即,int将0作为默认值,float get 0.0,依此类推.因此,如果您不初始化,它们将获得默认值.

Data Type   Default Value (for fields)
byte    0
short   0
int 0
long    0L
float   0.0f
double  0.0d
char    '\u0000'
String (or any object)      null
boolean false
Run Code Online (Sandbox Code Playgroud)