Je veux convertir String
en un type de données Double
. Je ne sais pas si je devrais utiliser parseDouble
ou valueOf
.
Quelle est la différence entre ces deux méthodes?
parseDouble
renvoie une double primitive contenant la valeur de la chaîne:
Renvoie un nouveau double initialisé à la valeur représentée par la chaîne spécifiée, comme effectué par la méthode valueOf de la classe Double.
valueOf
renvoie une instance Double. Si vous avez déjà mis en cache, vous obtiendrez la même instance en cache.
Renvoie une instance Double représentant la valeur double spécifiée. Si une nouvelle instance Double n'est pas requise, cette méthode doit généralement être utilisée de préférence au constructeur Double (double), car cette méthode produira probablement de meilleures performances spatio-temporelles en mettant en cache les valeurs fréquemment demandées.
Pour éviter la surcharge liée à la création d'une nouvelle instance d'objet Double, vous devez normalement utiliser valueOf
Double.parseDouble(String)
retournera un type primitif double
. Double.valueOf(String)
retournera un objet wrapper de type Double
.
Donc, par exemple:
double d = Double.parseDouble("1");
Double d = Double.valueOf("1");
De plus, valueOf(...)
est une méthode surchargée. Il a deux variantes:
Alors que parseDouble
est une méthode unique avec la signature suivante:
la méthode parseDouble () est utilisée pour initialiser une chaîne (qui devrait contenir une valeur numérique) .... la valeur renvoyée est du type de données primitive, comme int, float, etc.
Mais valueOf () crée un objet de la classe Wrapper. Vous devez le déballer pour obtenir la double valeur. Cela peut être comparé à un chocolat. Le fabricant enveloppe le chocolat avec du papier d'aluminium ou du papier pour éviter la pollution. L'utilisateur prend le chocolat, enlève et jette l'emballage et le mange.
Observez la conversion suivante.
int k = 100; Integer it1 = new Integer(k);
Le type de données int k est converti en objet, it1 à l'aide de la classe Integer. L'objet it1 peut être utilisé dans la programmation Java chaque fois que k est requis pour un objet.
Le code suivant peut être utilisé pour décompresser (récupérer int de l'objet Integer) l'objet it1.
int m = it1.intValue();
System.out.println (m * m); // imprime 10000
// intValue () est une méthode de la classe Integer qui renvoie un type de données int.
Ils convertissent tous les deux une chaîne en une valeur double, mais lorsque la méthode parseDouble () renvoie la valeur double primitive, la méthode valueOf () convertit ensuite la double primitive en un objet de classe Double wrapper contenant la valeur double primitive.
La conversion de String en primitive double peut générer NFE (NumberFormatException) si la valeur de String n'est pas convertible en un double primitif.
Si vous souhaitez convertir une chaîne en un type de données double, la plupart choisissent la méthode parseDouble (). Voir l'exemple de code:
String str = "123.67";
double d = parseDouble(str);
Vous obtiendrez la valeur en double. Voir le tutoriel StringToDouble à la page tutorialData .
La documentation de parseDouble()
indique "Renvoie un nouveau double initialisé à la valeur représentée par la chaîne spécifiée, comme effectué par la méthode valueOf de la classe Double.", Afin qu'ils soient identiques.