1) 局部變量初始化(局部變量:函數、語句中的變量,只在所屬區域內有效)
局部變量聲明后,Java虛擬機不會自動給它初始化為默認值。
因此對於局部變量,必須經過顯示的初始化,才能使用它。
如果使用一個沒有被初始化的局部變量,編譯器會報錯。
局部變量存儲於虛擬機棧的局部變量表中
例:
2) 對於類的成員變量,不管程序有沒有顯示的初始化,Java虛擬機都會先自動給它初始化為默認值。
對於數組,數組引用類型的變量的默認值為null。當數組變量實例化后,如果沒有顯式地為每個元素賦值,Java會把該數組的所有元素初始化為相應類型的默認值。
這是因為所有對象實例以及數組是在堆上分配內存的。在內存分配完成后,虛擬機需要將分配到的內存空間都初始化為零值(不包括對象頭)。這一操作保證了對象的實例字段在java代碼中可以不賦初值就直接使用,程序能訪問這些字段的數據類型所對應的零值。
例1:
例2:
運行結果:
例3:
運行結果: