c語言裡面變數初始化問題與Java區別
阿新 • • 發佈:2018-11-02
C語言中,定義區域性變數時如果未初始化,則值是隨機的,為什麼?
定義區域性變數,其實就是在棧中通過移動棧指標來給程式提供一個記憶體空間和這個區域性變數名繫結。因為這段記憶體空間在棧上,而棧記憶體是反覆使用的(髒的,上次用完沒清零的),所以說使用棧來實現的區域性變數定義時如果不顯式初始化,值就是髒的。
錯了,剛剛第四題,沒仔細看,原來是c語言的,記混了,不好意思,C語言裡面定義變數,沒有初始化,這個值是髒值,隨機的,java裡面是主函式裡必須變數初始化,在堆空間裡面變數確實是預設初始化,int型別預設是0,string預設是null,Boolean預設false
package text; public class Text1 { public static void main(String[] args) { int a; System.out.println(a); } }
在類中定義的成員變數如果你沒有初始化java會自動幫你初始化,如果是數字會自動初始化成0,字元會初始化成’o’,物件引用會初始化成null.
當然如果你定義的是區域性變數就必須初始化了,否則編譯會報錯
這正是java的特點,極大的提高了程式碼安全性
java中的區域性變數一定要賦初始值