Comment convertir un int en String en Java
Convertissez un int Java en string avec Integer.toString, String.valueOf et la concaténation.
Transformer un int en String est l'une des conversions les plus courantes en Java — vous en avez besoin dès lors que vous journalisez un nombre, construisez un message ou écrivez une valeur dans un fichier. Le JDK propose plusieurs façons de le faire, et elles produisent toutes le même texte. Ce chapitre présente les options idiomatiques et quand utiliser chacune d'elles.
Integer.toString — l'appel direct
La façon la plus claire et la plus explicite est Integer.toString(int). Elle dit exactement ce qu'elle fait et retourne le texte décimal du nombre :
int n = 256;
String s = Integer.toString(n); // "256"C'est la méthode que String.valueOf et la concaténation appellent toutes deux en interne, donc c'est la conversion canonique. Les valeurs négatives conservent leur signe (Integer.toString(-7) retourne "-7"), et le résultat n'est jamais null.
String.valueOf — sûr pour null et surchargé
String.valueOf est surchargé pour chaque type primitif, donc le même appel fonctionne pour int, long, double, boolean et char :
int n = 256;
String s = String.valueOf(n); // "256"Pour un int, il délègue simplement à Integer.toString, donc le résultat est identique. De nombreux développeurs le préfèrent car le même nom couvre tous les primitifs, et c'est le choix conventionnel lorsqu'on convertit une référence objet qui pourrait être null (il retourne "null" au lieu de lever une exception).
Concaténation de String — rapide, mais attention au coût
Ajouter un int à une chaîne vide force une conversion :
int n = 256;
String s = "" + n; // "256"C'est concis et acceptable pour un usage ponctuel, mais le compilateur le transforme en opération StringBuilder. Dans une boucle, des répétitions de "" + n créent de nombreux objets temporaires ; préférez Integer.toString ou un unique StringBuilder dans ce cas.
String.format et conversions de base
Lorsque vous avez besoin d'un rembourrage, d'un signe ou d'une base non décimale, utilisez String.format ou les méthodes Integer prenant en charge la base :
String padded = String.format("%05d", 42); // "00042"
String hex = Integer.toString(255, 16); // "ff"
String binary = Integer.toBinaryString(255); // "11111111"Voici comment se comparent les options courantes :
| Approche | Idéal pour | Remarque |
|---|---|---|
Integer.toString(n) | Texte décimal simple | Canonique ; jamais null |
String.valueOf(n) | Un seul nom pour tous les primitifs | Délègue à Integer.toString |
"" + n | Usage inline rapide | À éviter dans les boucles serrées |
String.format("%05d", n) | Rembourrage / formatage | Dépend de la locale, plus lent |
Integer.toString(n, radix) | Texte hex, binaire, octal | Base 2–36 |
Un exemple concret
Ce programme exécute chaque approche sur la même valeur, confirme que les trois méthodes courantes produisent des chaînes égales, et montre le résultat du formatage et des bases.
Ce que l'on retient de l'exécution :
Integer.toString(-42),String.valueOf(-42)et"" + (-42)affichent tous-42— les trois façons courantes sont interchangeables pour le texte décimal simple.- La ligne
equal?affichetrue, prouvant que les trois résultats sont identiques caractère par caractère, carString.valueOfet la concaténation passent toutes deux parInteger.toString. - Le signe négatif est conservé lors de la conversion, et la chaîne résultante a une longueur de
3(-,4,2) — le moins compte comme un caractère. String.format("%05d", 42)affiche00042, montrant comment la directive%05dremplit avec des zéros jusqu'à une largeur minimale de cinq.Integer.toBinaryString(255)affiche11111111etInteger.toString(255, 16)afficheff, démontrant qu'unintpeut être représenté dans n'importe quelle base, pas seulement en décimal.
Pratique
Chapitres connexes
- Convertir une String en int — l'opération inverse, avec
Integer.parseIntet la gestion des erreurs. - Formatage des strings Java — pour en savoir plus sur les directives
String.formatcomme%05d,%xet%,d. - Concaténation de strings Java — pourquoi
"" + ndevient unStringBuilderet quand cela est important. - StringBuilder — la façon efficace d'assembler de nombreux nombres en une seule chaîne dans une boucle.