[英]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.