Según entiendo el documento, la función ParseDouble hizo algo como:¿Cuál es la diferencia entre Double.valueOf (String s) y Double.ParseDouble (String s)?
Double parseDouble(String s) throws ... {
return new Double(Double.valueOf(s));
}
Según entiendo el documento, la función ParseDouble hizo algo como:¿Cuál es la diferencia entre Double.valueOf (String s) y Double.ParseDouble (String s)?
Double parseDouble(String s) throws ... {
return new Double(Double.valueOf(s));
}
La lógica es la misma, aunque el valor de retorno de Double.valueOf() devuelve un objeto doble montón asignado, donde como parseDouble devuelve una primitiva doble. Su ejemplo de código no es del todo correcto. La fuente java dice:
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());
}
valueOf devuelve un doble, parseDouble devuelve un doble. Utilice el que mejor se adapte a sus necesidades.
En Java 6 Lo contrario es cierto:
Double valueOf(String s) throws ... { return new Double(Double.parseDouble(s)); }
parseDouble
devuelve un double value
, valueOf devuelve un nuevo object
de tipo Double
.
No creo que haya nada que diga que tiene ser un * nuevo * Doble. –
Depende de si desea un doble o un doble. Aunque con autoboxing, en realidad no importa. Si estás haciendo algo muy intenso, entonces debes evitar el uso de dobles en lugares donde se necesiten dobles para evitar la sobrecarga del autoboxing. Pero, necesitaría ser muy, muy, muy intenso antes de que realmente haga la diferencia.
Aun así, recomendaría usar la adecuada según el resultado deseado.
sí. De hecho, solo necesito el valor, así que usaré doble primitivo. – oyo
¿Tiene alguna evidencia de que el autoboxing crea más gastos generales que llamar 'Double.valueOf (somePrimitiveDouble)' explícitamente? Casi garantizaría que no tendría gastos adicionales. El momento en el que desearía evitarlo es en la otra dirección: cuando llama a 'valueOf' que le da un Doble, y usted solo necesita un primitivo. Eso sería inútil por encima. –
Simple,
public static double parseDouble(String s) throws NumberFormatException
devuelve un java primitiva double
, mientras
public static Double valueOf(String s) throws NumberFormatException
devuelve un envuelto doble valor en un Double
.
thx, entonces el costo es menor para parseDouble (String s) cuando solo necesita el valor, y no todos los métodos adjuntos ... – oyo
Sí, está en lo correcto –