1. Pourquoi convertir les types ?
Java est un langage fortement typé. Si l’ordinateur a une « boîte » pour un nombre, alors essayer d’y mettre du texte — c’est à peu près comme tenter d’enfoncer une fourchette dans un port USB. Le compilateur ne vous le pardonnera pas ! 😡
Cependant, dans la pratique, nous travaillons souvent simultanément avec différents types de données. Par exemple, vous avez une chaîne qui contient un nombre. C’est là qu’entre en jeu la conversion (ou transformation) des types.
Voyons un exemple. Supposons que vous vouliez stocker le nombre d’utilisateurs :
int a = 1;
int b = "2";
int c = "trois";
Le compilateur dira aussitôt : « Tu me prends pour qui ? Je ne sais pas convertir automatiquement une chaîne en nombre — pas sans toi. Il faut convertir la chaîne en nombre explicitement. »
En Java, il existe plusieurs manières de convertir, chacune avec ses avantages, ses inconvénients et ses pièges classiques.
2. Convertir int en String
Dans notre travail, on a souvent besoin d’obtenir une représentation textuelle d’un nombre : par exemple pour l’afficher, l’enregistrer dans un fichier, l’envoyer sur le réseau, l’unir à du texte, etc. En Java, plusieurs méthodes existent, chacune étant pratique selon la situation.
Fonction String.valueOf()
C’est la méthode principale et la plus répandue :
int number = 42;
String str = String.valueOf(number); // str == "42"
String.valueOf() convertit un nombre en une chaîne qui correspond au type de l’objet passé en argument.
Concaténation avec une chaîne vide
Une méthode ancienne mais efficace :
int number = 42;
String str = "" + number;
Cette approche est rapide pour les cas simples, mais elle est moins explicite pour la personne qui lit le code.
3. Conversion implicite en chaîne
Comme déjà mentionné, les concepteurs de Java ont fait en sorte que toutes les variables, objets et expressions en Java puissent être convertis en type String.
De plus, cela se produit automatiquement lorsqu’on concatène un String avec un autre type. Exemples :
int a = 5;
String name = "Anya" + a; // name contient la chaîne Anya5
int a = 5;
String city = a + "New York" + a; // city contient la chaîne 5New York5
int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; // message contient la chaîne Hello! 10Yo
Dans ces trois exemples, nous avons librement combiné des variables de type int et String, et le résultat était toujours de type String.
Exemples :
int a = 5;
String name = "1" + a; // name contient la chaîne 15
int a = 5;
String city = a + "9" + a; // city contient la chaîne 595
int number = 10;
String code = "10";
String message = "" + number + code; // message contient la chaîne 1010
L’opération « + » s’évalue de gauche à droite, le résultat peut donc être quelque peu inattendu. Exemple :
int a = 5;
String name = a + a + "1" + a; // name contient la chaîne 1015
Ordre d’exécution : ((a + a) + "1") + a
4. Conversion d’une chaîne en nombre
Pour convertir un nombre en chaîne en Java, il suffit de le concaténer avec une chaîne vide :
String str = "" + number;
Que faire s’il faut convertir une chaîne en nombre ? On ne peut pas convertir n’importe quelle chaîne en nombre. Mais si la chaîne ne contient que des chiffres, alors on peut. Pour cela, en Java, il existe une fonction spéciale.
La commande ressemble à ceci :
int x = Integer.parseInt(string);
Où int x est la déclaration d’une variable entière x, et string est un nombre donné sous forme de chaîne (une chaîne composée de chiffres).
Exemples :
String str = "123";
int number1 = Integer.parseInt(str); // number1 contient le nombre 123;
int number2 = Integer.parseInt("321"); // number2 contient le nombre 321
int number3 = Integer.parseInt("321" + 0); // number3 contient le nombre 3210
int number4 = "321"; // Ne se compile pas : variable de type int, mais valeur de type String
Cela fonctionne aussi pour les valeurs négatives : la fonction Integer.parseInt() est très futée.
GO TO FULL VERSION