2012-05-14 37 views
48

Quiero convertir String a un tipo de datos Double. No sé si debería usar parseDouble o valueOf.¿Cuál es la diferencia entre Double.parseDouble (String) y Double.valueOf (String)?

¿Cuál es la diferencia entre estos dos métodos?

+0

posible duplicado de [Double.valueOf (s) vs. Double.parseDouble] (http://stackoverflow.com/questions/7255078/double-valueofs-vs-double-parsedouble) –

+2

este enlace está cerrado porque es un duplicado de mi respuesta :) – breceivemail

Respuesta

59

parseDouble devuelve una primitiva doble que contiene el valor de la cadena:

devuelve un nuevo doble inicializado con el valor representado por la cadena especificada, como se realizó por el método valueOf de la clase doble.

valueOf devuelve una instancia doble, si ya está en la memoria caché, obtendrá la misma instancia en caché.

Devuelve una instancia doble que representa el valor doble especificado. Si no se requiere una nueva instancia doble, este método generalmente debe ser usado con preferencia al constructor Doble (doble), ya que este método es probable que proporcione un mejor rendimiento de espacio y tiempo en caché .

Para evitar la sobrecarga de crear una nueva instancia de objeto doble, que debería usar normalmente valueOf

+2

+1 la familia de métodos 'valueOf()' es preferida por este motivo ... –

+5

como dijiste Creo que se prefiere parseDouble(). ¿Por qué valueOf()? – breceivemail

+2

La edición no fue mía, y no es válida, la revocaré – MByD

0

La documentación para parseDouble() dice "Devuelve un nuevo doble inicializado al valor representado por la cadena especificada, como se realiza mediante el método valueOf de la clase Double.", Por lo que deberían ser idénticos.

0

Si desea convertir cadena a tipo de datos double entonces la mayoría elegir el método() parseDouble. Ver el código de ejemplo:

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

Usted recibirá el valor doble. Consulte el tutorial StringToDouble al tutorialData.

+2

¿Y qué hay del método valueOf()? – breceivemail

+0

Devuelve un objeto doble que contiene el valor doble representado por el argumento string s. – Rajshri

28

Double.parseDouble(String) devolverá un tipo primitivo double. Double.valueOf(String) devolverá un objeto contenedor del tipo Double.

Así, por ej .:

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

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

Por otra parte, valueOf(...) es un método sobrecargado.Tiene dos variantes:

  1. Double valueOf(String s)
  2. Double valueOf(double d)

Considerando parseDouble es un método simple con la firma siguiente:

  1. double parseDouble(String s)
1

T hey ambos convierten una Cadena en un valor doble, pero donde el método parseDouble() devuelve el valor doble primitivo, el método valueOf() convierte adicionalmente el doble primitivo en un objeto de clase Doble envoltorio que contiene el valor doble primitivo.

La conversión de String a primitive double puede arrojar NFE (NumberFormatException) si el valor en String no es convertible en un doble primitivo.

método
1

parseDouble() se utiliza para inicializar una cadena (que debería contener un valor numérico) .... el valor que devuelve es de tipo de datos primitivo, como int, float, etc.

Pero valueOf () crea un objeto de clase Wrapper. Tienes que desenvolverlo para obtener el doble valor. Se puede comparar con un chocolate. El fabricante envuelve el chocolate con papel de aluminio para evitar la contaminación. El usuario toma el chocolate, lo saca, lo arroja y lo come.

Observe la siguiente conversión.

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

El int tipo de datos k se convierte en un objeto, IT1 usando la clase Integer. El objeto it1 se puede usar en la programación Java siempre que se requiera k un objeto.

El siguiente código se puede utilizar para desenvolver (volver a int del objeto Entero) el objeto it1.

int m = it1.intValue(); 

System.out.println (m * m); // imprime 10000

// intValue() es un método de la clase Integer que devuelve un tipo de datos int.

Cuestiones relacionadas