Dans une interface utilisateur graphique, des champs de texte attendent généralement que l'utilisateur saisisse une valeur numérique. Cette valeur numérique se retrouvera dans un objet String qui n'aidera pas vraiment votre programme si vous voulez faire de l'arithmétique. Heureusement, il existe des classes wrapper qui fournissent des méthodes pour convertir ces valeurs String en nombres et la classe String a une méthode pour les reconvertir..
Les types de données primitifs qui traitent des nombres (c'est-à-dire, octet, entier, double, flottant, long et court) ont tous des équivalents de classe. Ces classes sont appelées classes wrapper car elles prennent un type de données primitif et l'entourent des fonctionnalités d'une classe. Par exemple, la classe Double aura une valeur double comme données et fournira des méthodes pour manipuler cette valeur.
Toutes ces classes wrapper ont une méthode appelée valueOf. Cette méthode prend une chaîne comme argument et renvoie une instance de la classe wrapper. Par exemple, supposons que nous ayons une chaîne de valeur dix:
Numéro de chaîne = "10";
Avoir ce nombre en tant que chaîne ne nous est pas utile, nous utilisons donc la classe Integer pour le convertir en un objet Integer:
Entier convertNumber = Integer.valueOf (nombre);
Maintenant, le nombre peut être utilisé comme un nombre et non comme une chaîne:
nombre converti = nombre converti + 20;
Vous pouvez également faire passer directement la conversion à un type de données primitif:
int convertNumber = Integer.valueOf (number) .intValue ();
Pour les autres types de données primitifs, vous insérez simplement dans la classe de wrapper correcte - octet, entier, double, flottant, long court.
Remarque: Vous devez vous assurer que la chaîne peut être analysée dans le type de données approprié. Si ce n'est pas le cas, vous vous retrouverez avec une erreur d'exécution. Par exemple, en essayant de convertir "dix" en un entier:
Numéro de chaîne = "dix";
int convertNumber = Integer.valueOf (number) .intValue ();
produira une exception NumberFormatException car le compilateur n'a aucune idée que "dix" est supposé être 10.
Plus subtilement, la même erreur se produira si vous oubliez qu'un 'int' ne peut contenir que des nombres entiers:
Numéro de chaîne = "10,5";
int convertNumber = Integer.valueOf (number) .intValue ();