double [] dou = new double [12];
Double [] dou = new Double [12];
dou(在這兩種情況下)各不相同?Double與Double有什麼不同?
我試圖打印dou [0](沒有任何初始化)第一個案例顯示0.0而第二個顯示null任何人都可以告訴我爲什麼會發生這種情況?
由於事先
double [] dou = new double [12];
Double [] dou = new Double [12];
dou(在這兩種情況下)各不相同?Double與Double有什麼不同?
我試圖打印dou [0](沒有任何初始化)第一個案例顯示0.0而第二個顯示null任何人都可以告訴我爲什麼會發生這種情況?
由於事先
double
是基本類型,而Double
爲double
一類包裝。
由於double
是原始的,因此其默認值將是0
。另一方面,Double
變量是對象,所以它們的默認值將是null
。這指出在JLS:Initial Values of Variables(重點煤礦):
每個類變量,實例變量,或陣列部件與創建時(§15.9,§15.10)的默認值初始化:
對於字節類型,默認值爲零,也就是(字節)0的值。
對於short類型,默認值爲零,即(short)0的值。
對於int類型,默認值是零,即,0
對於類型長,默認值是零,即,0L。
對於浮點類型,默認值爲正零,即0.0f。
對於double類型,默認值爲正零,即0.0d。
對於char類型,默認值爲空字符,即'\ u0000'。
對於布爾類型,默認值爲false。
對於所有引用類型(§4.3),默認值是空
這也適用於其它基元和它們各自的類包裝:
int
和Integer
long
and Long
float
和Float
boolean
和Boolean
Double
是一個類和double
是基本類型
雙是基本類型。當作爲數組中的元素使用時,如果沒有給定其他值作爲默認值,java編譯器將使用0.0。
Double是參考類型。當你在數組中使用它作爲元素時,java編譯器會將它作爲一個對象來使用,並且數組中每個對象的默認值都是null。
您需要了解基元和對象之間的區別 –