Java 在hashmap中,hm.put(“Zara”,new Double(3434.34))的含义是什么;

Java 在hashmap中,hm.put(“Zara”,new Double(3434.34))的含义是什么;,java,jsp,collections,hashmap,Java,Jsp,Collections,Hashmap,我严重怀疑的是,为什么我们要使用新的双精度(3434.34)?我们可以直接使用hm.put(“Zara”,3434.34)而不是hm.put(“Zara”,新双精度(3434.34)吗?大多数初学者可能有这个疑问,我只是提出而已。请不要觉得奇怪,如果它看起来很幼稚……任何关于这方面的澄清肯定会帮助像我这样的新手。我们现在可以了 旧版本的Java不会自动装箱/自动取消装箱原语及其对应对象,因此这可能是为旧版本的Java编写的代码,或者是由“长大”的人编写的使用较旧版本的Java,从未了解过1.5及

我严重怀疑的是,为什么我们要使用新的双精度(3434.34)?我们可以直接使用hm.put(“Zara”,3434.34)而不是hm.put(“Zara”,新双精度(3434.34)吗?大多数初学者可能有这个疑问,我只是提出而已。请不要觉得奇怪,如果它看起来很幼稚……任何关于这方面的澄清肯定会帮助像我这样的新手。

我们现在可以了


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

您不能将基本值直接存储在
Hashmap
中-键和值必须是
对象的子类

在JDK1.5(又名5.0)之前,需要使用
newdouble()
语法包装原语值并存储它


在以后的版本中,“自动装箱”将允许您编写
.put(“Zara”,3434.34)
,并自动调用原语上的
新双精度

为了最小化您的问题,您可以对“对象”进行赋值,并检查类+值:

Object autoboxed = 3434.34;
Object explicit = new Double(3434.34);
System.out.println("auto-boxed:"+autoboxed.getClass());
System.out.println("explicit:"+explicit.getClass());
是的,您可以这样做(Java1.5或更高版本)。该值将自动装箱为双精度类型。