В чем разница между Double.valueOf(String s) и Double.ParseDouble(String s)?

Как я понимаю в документе, функция ParseDouble сделала что-то вроде:

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

Ответы

Ответ 1

Логика одна и та же, но возвращаемое значение Double.valueOf() возвращает кучу выделенного Двойного объекта, где, поскольку parseDouble возвращает примитивный двойник. Пример вашего кода не совсем корректен. Источник 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());
}

Ответ 2

Зависит от того, хотите ли вы двойное или двойное. Хотя с автобоксингом это не имеет большого значения. Если вы делаете что-то очень интенсивное, то вы хотите избежать использования парных в местах, где требуется удвоить, чтобы избежать накладных расходов на автобоксинг. Но, это должно быть очень, очень, очень, интенсивным, прежде чем это действительно имеет значение.

Я все же, тем не менее, защищал бы использование надлежащего в соответствии с желаемым результатом.

Ответ 3

parseDouble возвращает a double value, valueOf возвращает новый object типа Double.

Ответ 4

Простой,

public static double parseDouble(String s) throws NumberFormatException 

возвращает примитив java double, а

public static Double valueOf(String s) throws NumberFormatException

возвращает завернутое двойное значение в double.

Ответ 5

valueOf возвращает double, parseDouble возвращает Double. Используйте то, что вам подходит.

Ответ 6

В Java 6 обратное верно:

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