В чем разница между Double.parseDouble(string) и Double.valueOf(string)?

Я хочу преобразовать String в тип данных Double. Я не знаю, следует ли использовать методы parseDouble или valueOf?

В чем разница между этими методами?

Ответ 1

parseDouble возвращает примитивный двойник, содержащий значение строки:

Возвращает новый двойной инициализированный значение, представленное указанной строкой, которое выполняется методом valueOf класса Double.

valueOf возвращает экземпляр Double, если он уже кэширован, вы получите тот же кешированный экземпляр.

Возвращает двойной экземпляр, представляющий указанное двойное значение. Если новый экземпляр Double не требуется, этот метод обычно должен быть используется в качестве альтернативы конструктору Double (double), так как этот метод вероятно, обеспечит значительно лучшую производительность пространства и времени за счет кэширование часто запрашиваемых значений.

Чтобы избежать накладных расходов на создание нового экземпляра Double object, вы обычно должны использовать valueOf

Ответ 2

Double.parseDouble(String s) вернет примитивный двойной тип. Double.valueOf(String s) вернет Wrapper Object типа Double.

Итак, например,

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

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

Morover, valueOf() является перегруженным методом. Он имеет два варианта:

  • Double valueOf(String s)
  • Double valueOf(Double d)

    Где в качестве parseDouble есть единственный метод со следующей сигнатурой:

  • double parseDouble(String s)

Ответ 3

Оба они конвертируют String в двойное значение, но wherease метод parseDouble() возвращает примитивное двойное значение, метод valueOf() далее преобразует примитивный double в объект класса Double wrapper, который содержит примитивное двойное значение.

Преобразование из String в примитивный double может вызывать NFE (NumberFormatException), если значение в String не конвертируется в примитивный double.

Ответ 4

Метод parseDouble() используется для инициализации STRING (который должен содержать некоторое числовое значение).... возвращаемое значение имеет тип примитивных данных, например int, float и т.д.

Но valueOf() создает объект класса Wrapper. Вы должны развернуть его, чтобы получить двойное значение. Его можно сравнить с шоколадом. Изготовитель обертывает шоколад с помощью фольги или бумаги, чтобы предотвратить загрязнение. Пользователь принимает шоколад, удаляет и бросает обертку и ест ее.

Обратите внимание на следующее преобразование.

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

Тип данных int k преобразуется в объект, it1, используя класс Integer. Объект it1 может использоваться в Java-программировании, где k требуется объект.

Следующий код может быть использован для разворачивания (возврата int из объекта Integer) объекта it1.

int m = it1.intValue();

System.out.println(м * м);//печатает 10000

//intValue() - это метод класса Integer, который возвращает тип данных int.

Ответ 5

Документация для parseDouble() говорит: "Возвращает новый двойной инициализированный значение, представленное указанной строкой, как выполняется методом valueOf класса Double.", поэтому они должны быть идентичными.

Ответ 6

Если вы хотите преобразовать строку в двойной тип данных, тогда выберите метод parseDouble(). См. Пример кода:

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

Вы получите значение в двойном размере. См. Учебник StringToDouble в tutorialData.