Quelle est la différence entre le Double.parseDouble(String) et Double.valueOf(String)?
Je veux convertir String
à un Double
type de données. Je ne sais pas si je dois utiliser la parseDouble
ou valueOf
.
Quelle est la différence entre ces deux méthodes?
Vous devez vous connecter pour publier un commentaire.
parseDouble
renvoie une primitive de type double qui contient la valeur de la chaîne:valueOf
renvoie un Double exemple, si déjà mis en cache, vous obtiendrez la même instance mise en cache.Pour éviter la surcharge de la création d'un nouveau Double instance de l'objet, vous devez normalement utiliser
valueOf
valueOf()
famille de méthodes est préféré pour cette raison...parseDouble
.valueOf
est préféré seulement lorsque vous voulez un coffretDouble
.Double.valueOf(...)
n' pas cache souvent demandé valeurs. (Pour confirmer cela, essayez de lancerassert Double.valueOf(1) == Double.valueOf(1);
) Afin de conseiller les gens à utiliservalueOf
"pour éviter la surcharge de la création d'un nouveau Double instance d'objet" est vraiment à côté de la question. Comme d'autres l'ont souligné, la question importante est la boxe. Si vous avez besoin d'undouble
, utilisezparseDouble
. Si vous avez besoin d'unDouble
, utilisezvalueOf
.Double.parseDouble(String)
sera de retour d'une primitivedouble
type.Double.valueOf(String)
sera de retour un objet wrapper de typeDouble
.Donc, par exemple:
En outre,
valueOf(...)
est une méthode surchargée. Il dispose de deux variantes:Double valueOf(String s)
Double valueOf(double d)
Alors que
parseDouble
est une méthode unique avec la signature suivante:double parseDouble(String s)
Ils convertir une Chaîne en une valeur de type double, mais wherease la parseDouble() la méthode renvoie la primitive double de la valeur, la méthode valueOf() convertit plus primitives double, d'un lit Double classe wrapper objet qui contient les primitives de la double valeur.
De la conversion de la Chaîne primitive double peut jeter l'ENF(NumberFormatException) si la valeur de Chaîne n'est pas convertible en une primitive double.
parseDouble() la méthode est utilisée pour initialiser une CHAÎNE de caractères (qui contient quelques valeur numérique)....la valeur qu'elle renvoie est de type de données primitif, comme int, float, etc.
Mais valueOf() crée un objet de la classe Wrapper. Vous devez déballer afin d'obtenir le double de la valeur. Il peut être comparé à une tablette de chocolat. Le fabricant enveloppe le chocolat avec quelques feuilles d'aluminium ou de papier pour le prévenir de la pollution. L'utilisateur prend le chocolat, l'enlève et jette l'enveloppe et le mange.
Observer la conversion suivante.
int k = 100;
Integer it1 = new Integer(k);
Le type de données int k est converti en un objet, it1 à l'aide de classe Integer. Le it1 objet peut être utilisé en programmation Java, où k est nécessaire à un objet.
Le code suivant peut être utilisé pour déballer (retour int Entier de l'objet) l'objet it1.
Système.out.println(m*m); //affiche 10000
//intValue() est une méthode de la classe Integer qui renvoie un type de données int.
Documentation pour
parseDouble()
dit "Retourne une nouvelle double initialisé à la valeur représentée par la Chaîne spécifiée, telle qu'effectuée par la méthode valueOf de classe Double.", elles doivent donc être identiques.Si vous voulez les convertir en chaîne de type de données double alors la plupart choisissent parseDouble() la méthode.
Consultez l'exemple de code:
Vous obtiendrez la valeur en double. Voir la StringToDouble tutoriel tutorialData.