2014-02-05 131 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。

相关问题