【问题标题】:In hashmap what is the meaning of hm.put("Zara", new Double(3434.34));在 hashmap 中 hm.put("Zara", new Double(3434.34)); 的含义是什么?
【发布时间】:2013-06-19 13:26:24
【问题描述】:

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

【问题讨论】:

  • 是的,您可以这样做(Java 1.5 或更高版本)。该值将自动装箱为 Double 类型。

标签: java jsp collections hashmap


【解决方案1】:

现在可以了。

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

【讨论】:

    【解决方案2】:

    您不能将原始值直接存储在 Hashmap 中 - 键和值必须是 Object 的子类。

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

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

    【讨论】:

      【解决方案3】:

      为了尽量减少您的问题,您可以对“对象”进行分配并检查类+值:

      Object autoboxed = 3434.34;
      Object explicit = new Double(3434.34);
      System.out.println("auto-boxed:"+autoboxed.getClass());
      System.out.println("explicit:"+explicit.getClass());
      

      【讨论】:

        猜你喜欢
        • 2019-12-03
        • 2015-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-02
        • 2018-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多