Если метод возвращает Double, то почему мы будем называть его методом doubleValue? он уже возвращает двойной и в вычислениях, кажется, правильно оценивает.Двойное vs doubleValue в Java
ответ
До Java 1.5 авто-бокс (и unboxing) не существовал на Java. Итак, вам понадобится это, чтобы извлечь базовый примитив из Double.
Если вы не знакомы с авто-боксом, вы можете прочитать здесь больше. http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html
Вы вызываете 'doubleValue' на объект Double, чтобы преобразовать из помещенного объекта в примитивный тип данных. Поскольку большую часть времени Double автоматически распаковывается в double, вам обычно не нужно это делать, но если вы хотите быть явным в своем преобразовании, вы можете вызвать этот метод.
Вы должны позвонить doubleValue
, если вам нужно получить double
от Double
. Первый - это примитивный тип, а последний - тип объекта-обертки, который в основном инкапсулирует примитивное значение внутри неизменяемого объекта. Если возможно (и я говорю это, не зная точно цели вашего кода), используйте double
для всех ваших расчетов; используйте только Double
, если вам нужно сохранить значения в Collection
или Map
; это потому, что типы объектов потребляют больше памяти и могут быть подвергнуты кастинговым операциям.
double
с Double
(то же самое относится и к другим примитивным типам по сравнению с типами обертки), поскольку компилятор будет автоматически конвертировать из одного в другой по мере необходимости в процессе, известном как автоматический бокс (и автоматический -unboxing), поэтому нужно немного позаботиться о том, чтобы использовать правильный тип.
И просто добавить к этому немного и прямо указать: математические операции и тесты (арифметика, сравнение и т. Д.) Не могут быть выполнены с помощью 'Double', только 'double'. – yshavit
doubleValue возвращает примитив double от Двухместный Объект. В зависимости от сценария вы хотели бы получить двойное двойное.
- 1. BigDecimal round: doubleValue() vs setScale (2, BigDecimal.ROUND_HALF_UP) в значениях цены
- 2. Двойное генерирование в Java
- 3. NSTextField doubleValue локализация путаницы
- 4. Предотвращение округления в String.format ("%. 2f", doubleValue) в Java
- 5. Недействительный селектор на doubleValue
- 6. «Практическое» двойное округление в Java
- 7. Двойное нажатие клавиши в Java
- 8. Внедрение DoubleValue и FloatValue
- 9. отображения Java двойное значение
- 10. doubleValue из NSString, десятичные разряды удаляются
- 11. Не удалось сохранить двойное значение в NSUSerDefault
- 12. String.Format (формат, doubleValue), точность потерял
- 13. разница между Double.valueOf и doubleValue
- 14. Преобразование типа в двойное значение в java
- 15. Представить двойное значение как NSString
- 16. Двойное изменение значения в версии выпуска?
- 17. Сохранение конечных нулей из .doubleValue() в Swift
- 18. :: (двойное двоеточие) оператор в Java 8
- 19. Двойное значение с определенной точностью в java
- 20. Как предотвратить округление при получении doubleValue из строки?
- 21. Java Best Practices: Использование doubleValue() в вызовах, которые принимают только примитивные типы параметров
- 22. Разрешено литье (двойное *) до (двойное **)?
- 23. получить двойное значение от NSMutableArray
- 24. NSNumberFormatter iOS большое двойное значение
- 25. Обертывание двойного [] в двойное []
- 26. Метод NSString doubleValue дает неожиданные результаты
- 27. NSString - doubleValue возвращается NaN из жизнеспособного NSString
- 28. Кажется, что не получается .doubleValue() для работы (у меня установлена последняя версия Java)
- 29. Java - двойное постоянное число знаков после запятой
- 30. Java 8 Возможное двойное выражение Lambda
Итак, из ссылки это предполагает, что вы получаете удар производительности от autoboxing и autounboxing. В критически настроенном цикле вы могли бы вызвать myDouble.doubleValue(), чтобы избежать необходимости отмены отмены? – MedicineMan
@MedicineMan Нет, распаковка просто заключается в том, что компилятор превратит 'double foo = myDouble' в' double foo = myDouble.doubleValue() 'для вас - явное обращение к методу не имеет значения. Основная часть производительности связана с созданием вложенного в коробку объекта «Double» (и, возможно, в меньшей степени, для доступа к куче памяти вместо стека var для получения значения). – yshavit
Ишавит прибил его. Единственный способ избежать штрафа - избегать любого перехода между Double <--> double. Однако это часто непрактично, особенно если вы хотите использовать любые коллекции. Кроме того, это был бы очень редкий случай, когда это действительно было узким местом для приложения. – rfeak