簡體   English   中英

Java變量值初始化

[英]Java variable value initialisation

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

我的理解是,這需要引發運行時異常,因為變量“值”永遠不會獲得分配給它的實際初始值(公共int值;)。 但是,代碼可以正常工作並表現為好像變量“值”被分配了0(與public int value = 0;相同)。 有人可以解釋為什么會這樣嗎? 非常感謝

但是,代碼可以正常工作並表現為好像變量“值”被分配了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

我的理解是,這需要引發運行時異常,因為變量“值”永遠不會獲得分配給它的實際初始值(公共int值;)。

未能初始化必須初始化的變量由編譯器檢查,並且是編譯時錯誤。

運行時錯誤在運行時引發。 即,當您運行已成功編譯的程序時。 由於無法設置值而導致的唯一運行時錯誤是NullPointerException(用於訪問空引用),或者如果您將整數除以零,則很少出現ArithmeticException。

final字段和局部變量必須初始化,但非final字段將使用其默認值。

Java中的原始類型總是被分配一個默認值。 對於int它始終為0。

如果要使用Integer對象(而不是int ),那么如果未初始化,則會看到拋出空指針異常的情況。

這種初始化發生在Java中的實例變量上。 變量“值”是存在於該類的每個對象中的實例變量。 數據類型為int實例變量為其分配了默認值0。 不同的數據類型(實例變量)具有不同的默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM