【发布时间】:2014-03-02 04:50:21
【问题描述】:
double [] dou = new double [12];
Double [] dou = new Double [12];
dou(在这两种情况下)彼此有何不同?
我试图打印 dou[0] (没有任何初始化)第一个案例显示 0.0 而第二个显示 null 谁能告诉我为什么会发生这种情况?
提前致谢
【问题讨论】:
-
你需要了解图元和对象的区别
标签: java
double [] dou = new double [12];
Double [] dou = new Double [12];
dou(在这两种情况下)彼此有何不同?
我试图打印 dou[0] (没有任何初始化)第一个案例显示 0.0 而第二个显示 null 谁能告诉我为什么会发生这种情况?
提前致谢
【问题讨论】:
标签: java
double 是基本类型,而Double 是double 的类包装器。
由于double 是原始的,其默认值为0。另一方面,Double 变量是对象,因此它们的默认值为null。这在 JLS 中有说明:Initial Values of Variables(重点是我的):
每个类变量、实例变量或数组组件在创建时都会使用默认值进行初始化(第 15.9 节、第 15.10 节):
对于byte类型,默认值为0,即(byte)0的值。
对于short类型,默认值为0,即(short)0的值。
对于int类型,默认值为0,即0。
对于long类型,默认值为0,即0L。
对于float类型,默认值为正零,即0.0f。
对于double类型,默认值为正零,即0.0d。
对于char类型,默认值为空字符,即'\u0000'。
对于 boolean 类型,默认值为 false。
对于所有引用类型(第 4.3 节),默认值为 null
这也适用于其他原语及其各自的类包装器:
int 和 Integer
long 和 Long
float 和 Float
boolean 和 Boolean
【讨论】:
double 是一种原始类型。当用作数组中的元素时,如果没有其他值作为默认值,java 编译器将使用 0.0。
Double 是引用类型。当你将它作为数组元素使用时,java编译器将它初始化为一个对象,数组中每个对象的默认值为null。
【讨论】:
Double 是一个类,double 是一个原始类型
【讨论】: