В чем разница между 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));
}