我试图找到,但似乎都是模糊的。 我需要将Object o转换为Double。 正确的方法首先转换为字符串? 谢谢。Java正确的方式转换/投出对象为Double
回答
如果对象不是Double,则不能将对象投射到Double
。
查看API。
特别注意
valueOf(double d);
和
valueOf(String s);
这些方法让你从一个字符串或双原始得到一个Double
实例的方式。 (也不是构造函数;请阅读文档以了解它们的工作原理)您尝试自然转换的对象必须为您提供可以转换为double的对象。
最后,请记住,Double
实例是不可变的 - 一旦创建,您将无法更改它们。
new Double(object.toString());
但是,对于我来说,你似乎很奇怪你要从一个对象变成一个对象。在尝试进行转换之前,您应该更好地了解要开始的对象类别。您可能会遇到一些代码质量问题。
请注意,这是一个转换,而不是转换。
如果object为null,则会抛出nullpointerexception。 –
Double.valueOf(object.toString())使用较少的内存 – Loolooii
您可以使用instanceof运算符在转换之前测试它是否为double。然后你可以安全地将它转换为双精度。另外,您可以根据其他已知类型(例如Integer)对其进行测试,然后根据需要将它们强制手动双击。
Double d = null;
if (obj instanceof Double) {
d = (Double) obj;
}
在Java之前的版本1.7,你可以不投对象基本类型
double d = (double) obj;
你可以施放对象为Double就好
Double d = (Double) obj;
当心,它可以抛出一个如果对象不是Double,则为ClassCastException
另外值得一提的是,如果您被迫使用1.5之前的旧Java版本,并且您正尝试使用集合,则无法使用Double
等类型对集合进行参数化。
您必须手动“箱”到类Double
通过解析和铸造,做这样的事情增加新的项目,以及“拆箱”的原始double
时:
LinkedList lameOldList = new LinkedList();
lameOldList.add(new Double(1.2));
lameOldList.add(new Double(3.4));
lameOldList.add(new Double(5.6));
double total = 0.0;
for (int i = 0, len = lameOldList.size(); i < len; i++) {
total += Double.valueOf((Double)lameOldList.get(i));
}
老学校名单将只包含类型Object
,所以必须投到Double
。
此外,您将无法在Java早期版本中使用增强型for循环遍历列表 - 只能使用for-loop。
您的意思是“1.5之前”?这就是泛型和自动装箱的介绍。还是你的意思是别的? –
哎呀你是正确的@AlexeyRomanov,我编辑了我的答案来反映这一点。 –
如果您的对象表示一个数字,例如Integer,则可以将其转换为数字,然后调用doubleValue()方法。
Double asDouble(Object o) {
Double val = null;
if (o instanceof Number) {
val = ((Number) o).doubleValue();
}
return val;
}
试过所有这些方法转换 - >
public static void main(String[] args) {
Object myObj = 10.101;
System.out.println("Cast to Double: "+((Double)myObj)+10.99); //concates
Double d1 = new Double(myObj.toString());
System.out.println("new Object String - Cast to Double: "+(d1+10.99)); //works
double d3 = (double) myObj;
System.out.println("new Object - Cast to Double: "+(d3+10.99)); //works
double d4 = Double.valueOf((Double)myObj);
System.out.println("Double.valueOf(): "+(d4+10.99)); //works
double d5 = ((Number) myObj).doubleValue();
System.out.println("Cast to Number and call doubleValue(): "+(d5+10.99)); //works
double d2= Double.parseDouble((String) myObj);
System.out.println("Cast to String to cast to Double: "+(d2+10)); //works
}
- 1. doubleValue不会将对象始终正确地转换为double值
- 2. 无法正确地将JSON对象转换为Java对象
- 3. 转换值对象为正确的RegistryValueKind
- 4. Java“的”转换为double
- 5. 如何正确调用转换为Double方法的字符串?
- 6. 通过HTTP序列化正确的方式来转换对象。
- 7. Java错误:double无法转换为double []
- 8. 如何将double转换为Java中精确的小数部分?
- 9. ObjectInputStream不能正确转换对象
- 10. java对象转换
- 11. Java:将double转换为字符串
- 12. JNI将Java double转换为jdouble问题
- 13. 在java中将Object []转换为double []
- 14. 将python转换为java float vs double
- 15. 对象在wpf中转换转换后不能正确旋转?
- 16. 如何从列表<Double>转换为Java中的double []?
- 17. 如何将Java对象正确地转换成JSON(嵌套)
- 18. OnEvent使用EventBus投出不正确的事件对象
- 19. 这是将Java接口转换为Scala的正确方法吗?
- 20. 如何将http请求转换为正确的对象?
- 21. 在Java中显式对象转换
- 22. 模式:从轴对象转换Java类
- 23. 转换对象为对象
- 24. 如何将“格式化的double(String)”转换为double?
- 25. 什么是将Double转换为Integer的最佳方式
- 26. 将字符串转换为double的最佳方式?
- 27. 将Java对象转换为java xml对象
- 28. 正确的方式将日期转换为UTC
- 29. 如何快速将对象[,]转换为double [,]?
- 30. 将列表<double>转换为对象[]
什么是特殊类型的对象?它实际上是一个Double,还是其他的? – nos
什么是对象?它是一个未知的类或已经键入到Object的Double类。 – Rontologist
“我试图找到,但都显得模糊。” - 你的问题太模糊,无法得到明显的答案。请详细说明。什么是'对象o',意图是什么? – Saket