Java正确的方式转换/转换对象为Double

use*_*818 20 java double casting

我试图找到,但似乎都模糊不清.我需要将Object o转换为Double.是否正确的方式首先转换为String?谢谢.

小智 34

new Double(object.toString());
Run Code Online (Sandbox Code Playgroud)

但是对于我来说,从一个物体变成一个物体似乎很奇怪.在尝试转换之前,您应该更好地了解您正在开始的对象类.您可能会遇到一些代码质量问题.

请注意,这是转换,而不是转换.

  • Double.valueOf(object.toString()) 使用更少的内存 (4认同)
  • 如果object为null,则抛出nullpointerexception. (2认同)
  • `Double(String)` 和 `Double(double)` 构造函数在 JDK 9 中已弃用,[在 Java 16 中已弃用并删除](https://bugs.openjdk.org/browse/JDK-8249100) (2认同)

hvg*_*des 12

你不能施放对象为Double如果对象是不是双.

查看API.

特别注意

valueOf(double d);

valueOf(String s);

这些方法为您提供了一种Double从String或double原语获取实例的方法.(也不是构造函数;阅读文档以了解它们是如何工作的)您尝试自然转换的对象必须为您提供可以转换为double的对象.

最后,请记住Double实例是不可变的 - 一旦创建,您就无法更改它们.


小智 7

如果您的Object表示一个数字,例如Integer,您可以将其强制转换为Number,然后调用doubleValue()方法.

Double asDouble(Object o) {
    Double val = null;
    if (o instanceof Number) {
        val = ((Number) o).doubleValue();
    }
    return val;
}
Run Code Online (Sandbox Code Playgroud)


Ron*_*ist 6

您可以使用instanceof运算符进行测试,以确定在转换之前它是否为double.然后,您可以安全地将其转换为双倍.此外,您可以针对其他已知类型(例如整数)对其进行测试,然后根据需要将它们强制转换为双精度.

    Double d = null;
    if (obj instanceof Double) {
        d = (Double) obj;
    }
Run Code Online (Sandbox Code Playgroud)