gpt4 book ai didi

java - 关于哈希表中 doublevalue() 的混淆

转载 作者:行者123 更新时间:2023-12-02 07:48:35 25 4
gpt4 key购买 nike

// Demonstrate a Hashtable
import java.util.*;
class HTDemo {
public static void main(String args[]) {
Hashtable balance = new Hashtable();
Enumeration names;
String str;
double bal;
balance.put("John Doe", new Double(3434.34));
balance.put("Tom Smith", new Double(123.22));
balance.put("Jane Baker", new Double(1378.00));
balance.put("Todd Hall", new Double(99.22));
balance.put("Ralph Smith", new Double(-19.08));

// Show all balances in hash table.
names = balance.keys();
while(names.hasMoreElements()) {
str = (String) names.nextElement();
System.out.println(str + ": " +
balance.get(str));
}
System.out.println();

// Deposit 1,000 into John Doe's account
***bal = ((Double)balance.get("John Doe")).doubleValue();***
balance.put("John Doe", new Double(bal+1000));
System.out.println("John Doe's new balance: " +
balance.get("John Doe"));
}
}
  1. 行内 bal = ((Double)b​​alance.get("John Doe")).doubleValue(); doubleValue 有什么用? (我知道它会将对象转换为 double 值)但是如果我在没有这个的情况下运行,程序运行正常。
  2. (如果我错了请纠正我)balance.get在这里获取一个值为3434.34的 double 对象,并且它前面的(double)进行拆箱并将其转换为double 值中的 double 对象,那么 doubleValue() 如何以及为何将此 double 3434.34 视为对象??????

最佳答案

我不确定我是否正确理解了您的问题。我会尝试从我理解你的问题的角度来解释。

  1. 是的,你是对的,你不需要doubleValue()。它只是显式告诉 Java 拆箱的一种方式。如果您不使用doubleValue(),Java 会自动将其拆箱。因此,如果 Java 不支持自动将原始类型装箱到相应的对象类型,那么您将需要 doubleValue() 作为 (Double)b​​alance.get("John Doe") 将返回一个对象,而 bal 是一个原始类型的变量。
  2. 对于问题的第二部分,在 Java 中,double 是一种原始数据类型,Double 是一种对象类型。 Java 集合 API 以及 Hashtable 仅存储对象。它们不存储原始类型。因此,balance.get() 返回一个对象。您将其转换为另一个 Double 类型的对象。由于 Java 提供了自动装箱/拆箱功能,因此 doubleValue() 方法在这里是可选的。

希望这有帮助!

关于java - 关于哈希表中 doublevalue() 的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com