2014-02-05 48 views
1
double [] dou = new double [12]; 


Double [] dou = new Double [12]; 

dou(在這兩種情況下)各不相同?Double與Double有什麼不同?

我試圖打印dou [0](沒有任何初始化)第一個案例顯示0.0而第二個顯示null任何人都可以告訴我爲什麼會發生這種情況?

由於事先

+1

您需要了解基元和對象之間的區別 –

回答

5

double是基本類型,而Doubledouble一類包裝。

由於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),默認值是空

這也適用於其它基元和它們各自的類包裝:

  • intInteger
  • long and Long
  • floatFloat
  • booleanBoolean
0

Double是一個類和double是基本類型

1

雙是基本類型。當作爲數組中的元素使用時,如果沒有給定其他值作爲默認值,java編譯器將使用0.0。

Double是參考類型。當你在數組中使用它作爲元素時,java編譯器會將它作爲一個對象來使用,並且數組中每個對象的默認值都是null。

相關問題