什么是Double.valueOf(String s)和Double.ParseDouble(String s)之间的区别?

时间:2010-09-14 12:41:42

标签: java

据我所知,ParseDouble函数就像:

 Double parseDouble(String s) throws ... {       
      return new Double(Double.valueOf(s));
 }

6 个答案:

答案 0 :(得分:20)

逻辑是相同的,但Double.valueOf()的返回值返回一个堆分配的Double对象,其中parseDouble返回一个原始double。您的代码示例不太正确。 java源代码为:

public static double parseDouble(String s) throws NumberFormatException {
    return FloatingDecimal.readJavaFormatString(s).doubleValue();
}

public static Double valueOf(String s) throws NumberFormatException {
    return new Double(FloatingDecimal.readJavaFormatString(s).doubleValue());
}

答案 1 :(得分:2)

取决于您是想要双人还是双人。虽然有自动装箱,但这并不重要。如果你正在做一些非常密集的事情,那么你想避免在需要双打的地方使用双打以避免自动装箱开销。但是,在实际产生任何差异之前,它需要非常,非常,非常密集。

但是,我仍然主张根据所需的结果使用正确的一个。

答案 2 :(得分:1)

parseDouble返回double value,valueOf会返回object类型的新Double

答案 3 :(得分:1)

简单,

public static double parseDouble(String s) throws NumberFormatException 

返回java原语double,而

public static Double valueOf(String s) throws NumberFormatException

Double中返回包裹的双精度值。

答案 4 :(得分:0)

valueOf返回一个double,parseDouble返回一个Double。使用适合您需求的任何一种。

答案 5 :(得分:0)

在Java 6中,情况恰恰相反:

Double valueOf(String s) throws ... {       
      return new Double(Double.parseDouble(s));
}