// 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"));
}
}
bal = ((Double)balance.get("John Doe")).doubleValue();
doubleValue
有什么用? (我知道它会将对象转换为double值)但如果没有这个运行程序,程序运行正常。balance.get
在这里得到一个值为3434.34
的双重对象,并在它前面的(双)进行拆箱并将其转换为double值的double对象然后如何和为什么doubleValue()
将此双3434.34
视为对象????? 答案 0 :(得分:2)
我不确定我的问题是否正确。我会尝试从我理解你的问题的角度来解释。
doubleValue()
,Java将自动取消装箱。因此,如果Java不支持将原始类型自动[un]装入相应的Object类型,那么您将需要doubleValue()
,因为(Double)balance.get("John Doe")
将返回一个Object而bal
是一个原始类型的变量。double
是原始数据类型,Double
是对象类型。 Java集合API因此Hashtable
仅存储对象。它们不存储基本类型。因此,balance.get()
返回一个对象。您将其转换为Double
类型的另一个对象。由于Java提供了自动装箱/取消装箱,doubleValue()
方法在这里是可选的。希望这有帮助!
答案 1 :(得分:0)
集合只适用于OBJECT类型而不是原始类型,创建包装类的原因之一是,您不能存储3.4
但是您可以存储new Double(3.4)
,是的,如您所说,你可以使用没有doubleValue的值,但它是一种标准的处理方式。对于隐式调用和转换,存在jvms / jre的不同版本在这种情况下表现略有不同的风险,为了避免它们,您希望以标准方式执行它,以便它不会受到影响
答案 2 :(得分:0)
- 符合bal =((Double)balance.get(“John Doe”))。doubleValue(); doubleValue有什么用(知道它将对象转换为double值) 但如果我没有这个,程序运行正常。
醇>
正确。
- (如果我错了,请纠正我)
醇>balance.get()
获取值为3434.34的双重对象,并且(双)在它前面取消装箱
没有。没有(double)
。有(Double)
。它将其从Object
转换为Double
。
并将其转换为双重对象
是
双值
没有。这是一个对象而不是一个价值。这句话毫无意义。
然后doubleValue()如何以及为什么将此双3434.34视为对象?
没有。它调用Double.doubleValue(),返回double
。
此代码根本不使用自动装箱。自Java 1.5大约5年前问世以来,此代码中的doublevalue()
调用已经过时。它也不使用泛型。我怀疑你正在看一些非常古老的代码。