Double.parseDouble(String)和Double.valueOf(String)有什么区别?

时间:2012-05-14 04:46:32

标签: java type-conversion

我想将String转换为Double数据类型。我不知道是否应该使用parseDoublevalueOf

这两种方法有什么区别?

6 个答案:

答案 0 :(得分:74)

parseDouble返回包含字符串值的原始double:

  

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

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

  

返回表示指定double值的Double实例。如果   不需要新的Double实例,这种方法通常应该是   优先使用构造函数Double(double),就像这个方法一样   可能会产生明显更好的空间和时间表现   缓存经常请求的值。

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

答案 1 :(得分:32)

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)
  3. parseDouble是具有以下签名的单一方法:

    1. double parseDouble(String s)

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

但是valueOf()创建了一个Wrapper类的对象。您必须打开它才能获得double值。它可以与巧克力进行比较。制造商用一些箔或纸包裹巧克力以防止污染。用户拿出巧克力,去掉并扔掉包装并吃掉它。

请注意以下转换。

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

将int数据类型k转换为对象,it1使用Integer类。 it1对象可以在Java编程中用于需要k的对象。

以下代码可用于解包(从Integer对象获取int)对象it1。

int m = it1.intValue();

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

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

答案 4 :(得分:0)

parseDouble()的文档说“返回一个初始化为由指定String表示的值的新double,由double类的valueOf方法执行。”,因此它们应该相同。

答案 5 :(得分:0)

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

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

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