【问题标题】:how does double differ from Double? [duplicate]双倍与双倍有何不同? [复制]
【发布时间】:2014-03-02 04:50:21
【问题描述】:
double [] dou = new double [12];


Double [] dou = new Double [12];

dou(在这两种情况下)彼此有何不同?

我试图打印 dou[0] (没有任何初始化)第一个案例显示 0.0 而第二个显示 null 谁能告诉我为什么会发生这种情况?

提前致谢

【问题讨论】:

  • 你需要了解图元和对象的区别

标签: java


【解决方案1】:

double 是基本类型,而Doubledouble 的类包装器。

由于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

这也适用于其他原语及其各自的类包装器:

  • intInteger
  • longLong
  • floatFloat
  • booleanBoolean

【讨论】:

    【解决方案2】:

    double 是一种原始类型。当用作数组中的元素时,如果没有其他值作为默认值,java 编译器将使用 0.0。

    Double 是引用类型。当你将它作为数组元素使用时,java编译器将它初始化为一个对象,数组中每个对象的默认值为null。

    【讨论】:

      【解决方案3】:

      Double 是一个类,double 是一个原始类型

      【讨论】:

        猜你喜欢
        • 2012-10-31
        • 1970-01-01
        • 2014-02-28
        • 2016-07-11
        • 1970-01-01
        • 2013-03-30
        • 2013-05-07
        • 1970-01-01
        • 2011-01-10
        相关资源
        最近更新 更多