将double []包装为Double []

时间:2015-01-21 11:50:11

标签: java

我是java的新手。我找到了一些我无法理解的东西。 我知道Double是一个包装类,你可以在一个对象中包含一个double值。所以看起来像这样的代码可以正常工作

    double pi = 3.14;
    Double tempVariable = new Double(pi);

所以对我来说似乎是完全合乎逻辑的,因为我可以将double包装成Double,将double []包装到Double []就好了。但事实并非如此。 我尝试了我能想到的一切(语法改变 - 创建一个包含所述double []类型的Object类型的对象,然后转换为Double [],处理Double对象就好像它是一个数组一样)但这些都没有用。< / p>

我正在使用j2me。

你们有什么建议吗?

@MightyPork:这是我尝试做的第一件事。我认为,试图做到这一点的代码如下

    public Double[] modelWeights = new Double[9];
    modelweights = {-1.31,1.39,-0.36,1.55,1.55,-2.03,2.25,2.27,-0.72};

但这不会奏效。我不知道为什么。

@ Abimaran Kugathasan ::我昨天看到了ArrayUtils,这将是一个很好的解决方案,但是我使用的是j2me,而像List或HashSet这样的类(在ArrayUtils中是必需的)并没有在j2me中实现。我错过了什么吗?

编辑::由Abimaran Kugathasan链接的帖子确实有其他答案非常接近fge的答案。谢谢大家的评论。

1 个答案:

答案 0 :(得分:2)

欢迎来到Java的历史包袱阵列之一。

类似于你有原始类型double和他们的&#34;类等价&#34; Double,并且你可以无缝地使用另一个是因为(在Java 5之后)在这种情况下编译器会为你装箱/取消装箱。

但它不会对数组这样做;所以Double[]不是&#34;包装类&#34; double[]

如果你有一个double[]数组,你想要&#34;转入&#34;一个Double[],你别无选择,只能自己复制......例如:

final double[] primitiveArray = ...;

final int len = primitiveArray.length;

final Double[] boxedArray = new Double[len];

for (int index = 0; index < len; index++)
    boxedArray[index] = Double.valueOf(primitiveArray[index]);