1. 程式人生 > >Java的區域性變數沒有系統預設初始值

Java的區域性變數沒有系統預設初始值

在看Think in java 中看到這樣一句話:

“未初始化的區域性變數更有可能是程式設計師的疏忽, 所以採用預設值反而會掩蓋這種失誤”

然後才去驗證,發現,區域性變數都必須要顯式地初始化,不然編譯不通過。

而全域性變數不用顯式地初始化,如果漏掉初始化,系統預設給以初始值:

int ---> 0

long ---> 0L

boolean ---> false

Object ---> null     等等

對於全域性變數的預設初始化:  “無法阻止自動初始化的進行, 它將在構造器發生之前發生”。

在建立物件時“這塊儲存空間會被清零,這就自動的將物件中的所有基本型別設定為預設值,而引用設定為NULL”

之前我的理解是:物件在生成時,利用反射可以得到類資訊,所以類中的全域性變數就可以被預設賦值,但是區域性變數是方法被呼叫之後才會分配儲存空間的,也無法通過反射手段得到變數資訊,所以必須顯式初始化。