Java变量值初始化

时间:2013-04-23 08:53:07

标签: java variables initialization

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

考虑到考试的代码:

public class SimpleCalc {
    public int value;
    public void calculate() { value += 7; }
}

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);
    }
}

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

4 个答案:

答案 0 :(得分:8)

  

。但是,代码的工作和行为就像变量“value”一样   赋值0(与public int value = 0相同;)。

java中的实例变量获取默认值。即,int得到0作为默认值,float得到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

答案 1 :(得分:1)

  

我的理解是,这需要抛出一个运行时异常,因为变量" value"永远不会获得分配给它的实际初步值(public int value;)。

编译器检查无法初始化必须初始化的变量,并且编译时错误。

运行时抛出运行时错误。即,当您运行已成功编译的程序时。您将无法设置值而获得的唯一运行时错误是NullPointerException(用于访问空引用),如果除以整数为零,则很少会出现ArithmeticException。

必须初始化

final个字段和局部变量,但非最终字段将重置其默认值。

答案 2 :(得分:0)

Java中的

原始类型总是被赋予默认值。对于int,此值始终为0.

如果您要使用Integer对象(而不是int),如果未初始化,则会看到抛出空指针异常。

答案 3 :(得分:0)

这种初始化发生在java中的实例变量中。变量'value'是一个实例变量,存在于该类的每个对象中。数据类型int的实例变量具有分配给它的默认值0。不同的数据类型(实例变量)具有不同的默认值。

Example