double [] dou = new double [12];
Double [] dou = new Double [12];
dou(在这两种情况下)是如何相互不同的?
我试图打印dou [0](没有任何初始化)第一个案例显示0.0而第二个案例显示null可以有人告诉我为什么会这样吗?
提前致谢
答案 0 :(得分:5)
double
是基本类型,而Double
是double
的类包装。
由于double
是原始的,因此其默认值为0
。另一方面,Double
变量是对象,因此它们的默认值为null
。这在JLS中有说明:Initial Values of Variables(强调我的):
每个类变量,实例变量或数组组件在创建时都会使用默认值进行初始化(§15.9,§15.10):
对于type byte,默认值为零,即(byte)0的值。
对于short类型,默认值为零,即(short)0。
的值对于int类型,默认值为零,即0。
对于long类型,默认值为零,即0L。
对于float类型,默认值为正零,即0.0f。
对于double类型,默认值为正零,即0.0d。
对于char类型,默认值为空字符,即'\ u0000'。
对于类型boolean,默认值为false。
对于所有引用类型(§4.3),默认值为null
这也适用于其他原语及其各自的类包装器:
int
和Integer
long
和Long
float
和Float
boolean
和Boolean
答案 1 :(得分:1)
double是原始类型。当在数组中用作元素时,如果没有给出其他值作为默认值,则java编译器使用0.0。
Double是引用类型。当您将它用作数组中的元素时,java编译器会将其作为对象,并且数组中每个对象的默认值为null。
答案 2 :(得分:0)
Double
是一个类,double
是基本类型