68

我想转换StringDouble数据类型。我不知道我是否应该使用parseDoubleor valueOf

这两种方法有什么区别?

4

6 回答 6

86

parseDouble返回包含字符串值的原始双精度:

返回一个新的 double,初始化为由指定 String 表示的值,由 Double 类的 valueOf 方法执行。

valueOf返回一个 Double 实例,如果已经缓存,您将获得相同的缓存实例。

返回表示指定双精度值的 Double 实例。如果不需要新的 Double 实例,则通常应优先使用此方法而不是构造函数 Double(double),因为此方法可能会通过缓存频繁请求的值来显着提高空间和时间性能。

为了避免创建新的 Double 对象实例的开销,您通常应该使用valueOf

于 2012-05-14T04:49:23.407 回答
37

Double.parseDouble(String)将返回原始double类型。 Double.valueOf(String)将返回一个类型的包装对象Double

因此,例如:

double d = Double.parseDouble("1");

Double d = Double.valueOf("1");

而且,valueOf(...)是一个重载的方法。它有两种变体:

  1. Double valueOf(String s)
  2. Double valueOf(double d)

parseDouble具有以下签名的单个方法:

  1. double parseDouble(String s)
于 2012-05-14T05:28:55.917 回答
2

parseDouble() 方法用于初始化一个字符串(它应该包含一些数值)......它返回的值是原始数据类型,如 int、float 等。

但是 valueOf() 创建了一个 Wrapper 类的对象。您必须打开它才能获得双精度值。它可以与巧克力相提并论。制造商用一些箔纸或纸包裹巧克力以防止污染。用户拿起巧克力,取下并扔掉包装纸,然后吃掉。

观察以下转换。

int k = 100; Integer it1 = new Integer(k);

int 数据类型 k 使用 Integer 类转换为对象 it1。it1 对象可用于 Java 编程中任何需要 k 对象的地方。

以下代码可用于展开(从 Integer 对象中取回 int)对象 it1。

int m = it1.intValue();

System.out.println(m*m); // 打印 10000

//intValue() 是 Integer 类的一个方法,它返回一个 int 数据类型。

于 2014-06-25T06:20:29.767 回答
1

它们都将 String 转换为 double 值,但是 parseDouble() 方法返回原始 double 值, valueOf() 方法进一步将原始 double 转换为包含原始 double 值的 Double 包装类对象。

如果 String 中的值不可转换为原始 double,则从 String 到原始 double 的转换可能会引发 NFE(NumberFormatException)。

于 2012-05-14T06:30:41.817 回答
0

文档parseDouble()说“返回一个初始化为指定字符串表示的值的新双精度值,由 Double 类的 valueOf 方法执行。”,所以它们应该是相同的。

于 2012-05-14T04:49:14.593 回答
0

如果要将字符串转换为双精度数据类型,则大多数选择 parseDouble() 方法。请参阅示例代码:

String str = "123.67";
double d = parseDouble(str);

您将获得双倍的价值。请参阅 tutorialData 中的 StringToDouble教程

于 2012-05-14T05:09:12.663 回答