-5

我的严重疑问是,我们为什么要使用 new Double(3434.34)?我们可以直接用hm.put("Zara", 3434.34)代替hm.put("Zara", new Double(3434.34)吗?大部分初学者可能会有这个疑问,我只是提出来。请不要觉得奇怪,如果它看起来很幼稚......对此的任何澄清肯定会帮助像我这样的新手......

4

3 回答 3

5

我们可以,现在。

旧版本的 Java 不会自动装箱/自动拆箱原语及其对应的 Object,因此这可能是为旧版本 Java 编写的代码,或者是由使用旧版本 Java “长大”并且从未了解了 1.5 及更高版本中的语法改进。

于 2013-06-22T14:26:42.477 回答
3

您不能将原始值直接存储在 a Hashmap- 键和值必须是Object.

在 JDK 1.5(又名 5.0)之前,new Double()需要语法来包装原始值并存储它。

在以后的版本中,“自动装箱”将允许您在原语上编写.put("Zara", 3434.34)和自动调用。new Double

于 2013-06-22T14:27:30.853 回答
0

to minimize your question, you could make assignments to ''Object'' and check the class+value:

Object autoboxed = 3434.34;
Object explicit = new Double(3434.34);
System.out.println("auto-boxed:"+autoboxed.getClass());
System.out.println("explicit:"+explicit.getClass());
于 2013-06-22T14:30:48.417 回答