si un método devuelve un doble, ¿por qué deberíamos llamar al método "doubleValue" en él? ya devuelve un doble y en los cálculos, parece evaluar correctamente.Double vs doubleValue en Java
Respuesta
Antes de Java 1.5 auto-boxing (y unboxing) no existía en Java. Entonces, necesitarías esto para extraer la primitiva subyacente de un Doble.
Si no está familiarizado con el auto-boxing, puede leer más aquí. http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html
Llama a 'doubleValue' en un objeto doble para convertir del objeto en caja al tipo de datos primitivo. Como la mayoría de las veces el Doble se desempaqueta automáticamente en un doble, por lo general no es necesario que lo haga, pero si desea ser explícito en su conversión, puede llamar a este método.
Llamarías a doubleValue
si necesitas obtener un desde un Double
. El primero es un tipo primitivo, mientras que el segundo es un tipo de objeto envoltorio, que básicamente encapsula un valor primitivo dentro de un objeto inmutable. Si es posible (y estoy diciendo esto sin saber exactamente el propósito de su código), use double
para todos sus cálculos; solo use Double
si necesita almacenar los valores en Collection
o Map
; esto se debe a que los tipos de objetos consumen más memoria y pueden estar sujetos a operaciones de fundición.
Es fácil confundir double
con Double
(lo mismo aplica para los otros tipos primitivos vs. tipos de envoltura), ya que el compilador convertirá automáticamente de uno a otro según sea necesario en un proceso conocido como auto-boxing (y auto -unboxing), por lo que se debe tener un poco de cuidado para usar el tipo correcto.
Y solo para agregar a esto un poco, y explícitamente enunciarlo: las operaciones y pruebas matemáticas (aritmética, comparación, etc.) no se pueden hacer con 'Double's, only' double's. – yshavit
doubleValue devuelve una primitiva doble del doble objeto. Dependiendo de la situación, le conviene obtener el doble de un Doble.
- 1. double double vs double
- 2. double double vs long int
- 3. DOUBLE vs DECIMAL en MySQL
- 4. Cómo resolver un problema Java Rounding Double
- 5. Evitar el redondeo en String.format ("% .2f", doubleValue) en Java
- 6. Hash a double en Java
- 7. Double vs float en el iPhone
- 8. float vs double en hardware de gráficos
- 9. Java Double Comparison
- 10. Conversión de String a Double en Android
- 11. ¿Cómo convierto Double [] a double []?
- 12. printf y double double
- 13. double no (!!) vs coerción de tipo en JavaScript
- 14. Java ArrayList <Double> IndexOutOfBoundsException Problema
- 15. Java JRE vs GCJ
- 16. Double-Loop en msbuild?
- 17. Serialización en Java vs JSON vs XML
- 18. Monotouch - [NSConcreteValue doubleValue]: selector no reconocido enviado a la instancia
- 19. Cómo funcionan las tiendas java float v double
- 20. Java: preguntas sobre radianes, Math.cos, Math.sin, double y long
- 21. Double Negation en C++ código
- 22. Java IEEE 64-bit 754 double, valores para evitar
- 23. ¿Por qué Math.Floor (Double) devuelve un valor de tipo Double?
- 24. Double to Const Char *
- 25. double as true/false
- 26. Convertir void * a double
- 27. bash double bracket issue
- 28. jenkins double email
- 29. Double-dispatch y alternativas
- 30. double free or corruption
Por lo tanto, desde el enlace sugiere que tome un golpe de rendimiento de autoboxing y autounboxing. En un ciclo crítico de rendimiento, ¿podría llamar a myDouble.doubleValue() para evitar tener que aplicar la penalización de unboxing? – MedicineMan
@MedicineMan No, el unboxing es simplemente que el compilador convertirá 'double foo = myDouble' en' double foo = myDouble.doubleValue() 'para usted; llamar al método explícitamente no importa. La mayor parte del golpe de rendimiento es haber creado el objeto 'Doble' en caja en primer lugar (y, probablemente, en menor grado, tener que acceder a la memoria del montón en lugar de una pila var para obtener el valor). – yshavit
yshavit lo clavó. La única forma de evitar la penalización es evitar cualquier transición entre Doble <--> doble. Sin embargo, eso a menudo no es práctico, especialmente si desea usar cualquier colección. Además, sería un caso * muy * raro en el que esto es realmente un cuello de botella de rendimiento para una aplicación. – rfeak