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。
您需要了解基元和对象之间的区别 –