在java中變量是具有預設初始化值的。
但這這麼說也不怎麼準确,因為java中的變量(我覺得稱為字段更合适),分為屬于類的成員變量和屬于函數或者局部代碼塊的局部變量。如果在定義變量後沒有給它們賦初始值,那麼java會給于一個預設的初始化值,但隻有類的成員變量才被初始化,而局部變量不會被初始化。如果沒有被初始化的變量被操作,java在編譯器就會給予錯誤警告,如果沒有被賦予初值的局部變量,一直沒被操作,則編譯通過,java不會給予錯誤警告。
除了變量的初始化外,新建立的類的引用也是一樣,如果沒有用new關鍵字給它配置設定對象的話,如果這個引用是屬于類的成員字段則被預設初始化為null,如果在函數或者局部代碼塊内部,不會被初始化;
java基本資料類型預設初始化表
基本類型
預設值
char
'\u0000'(null)
byte
0(byte 1位元組)
short
0(short 2位元組)
int
0(4位元組)
long
0L
float
0.0f
double
o.od
boolean
false
另外添加一個:類引用會被初始化為null
下面,用一段代碼測試一下:
運作結果:
這個結果就說明了,類測成員變量會被給予一個預設初始化值,類引用也會被初始化位nullvcD4KPHA+z8LD5rXEveG5+8rHyKW19MnPzsS0+sLr1tDK5LP2uq/K/bPJ1LGx5MG/JiMyMDU0MDu1xNPvvuSjrMbky/zDu9PQ1/a4xLavPC9wPgo8cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20131218/20131218093053283.jpg" alt="">
從上面的報錯資訊我們不難看出,包含在函數中的成員變量或者類引用,都不會被預設給予初始化值。
思考:
java的這種機制避免了沒有被初始化的資料成員在進行其它操作時引起的嚴重性錯誤,盡量從文法上避免程式員犯錯。與之相反,C和C++,無論你對變量時候進行初始化,都可以對變量進行操作,這時變量中存儲的是一串随機的數字(可能是上一個程式使用該記憶體空間後遺留的值,計算機中的資料不會被實體意義上的“擦除”,你對一塊記憶體的寫資料隻是覆寫了這塊記憶體的舊值而已。)。java編譯器會将未初始化變量視為錯誤,而C/C++編譯器則将其視為警告
喜歡 (0)or分享 (0)