Introduction : pourquoi cette question tourmente même les développeurs Java expérimentés ?
Si vous avez déjà cherché sur Google "How do I convert a String to an int in Java ?", vous n'êtes pas seul. C'est l'une des questions les plus populaires sur Stack Overflow avec des millions de vues. Cela semble simple, non ? Prenez une chaîne, convertissez-la en nombre, et le tour est joué. Mais en pratique, la conversion d'un String en int en Java cache des pièges : des exceptions inattendues au choix entre performance et lisibilité du code.
Dans cet article, nous analyserons toutes les méthodes populaires de conversion d'une chaîne en nombre en Java, en les comparant en termes de vitesse, de sécurité et de commodité. Vous apprendrez à éviter l'erreur classique NumberFormatException et obtiendrez des solutions prêtes à l'emploi pour des projets réels. C'est parti !
Méthode n°1 : Le classique — Integer.parseInt()
La méthode la plus courante et la plus rapide pour convertir un String en int en Java est l'utilisation de la méthode statique Integer.parseInt(). Elle prend une chaîne et retourne le type primitif int.
public class ParseIntExample { public static void main(String[] args) { String number = "42"; int result = Integer.parseInt(number); System.out.println(result); // Sortie : 42 }}Avantages de Integer.parseInt() :
- Performance maximale — ne crée pas d'objets superflus.
- Simplicité — une seule ligne de code sans enveloppes inutiles.
- Support des systèmes de numération — vous pouvez spécifier la base (radix) :
Integer.parseInt("ff", 16)retourne 255.
Inconvénients et pièges :
- Si la chaîne contient des caractères non numériques (espaces, lettres), une NumberFormatException est levée.
- Ne gère pas
null— cela provoque uneNullPointerException.
// Exemple d'erreur :String badInput = "42abc";int value = Integer.parseInt(badInput); // NumberFormatException !Méthode n°2 : Integer.valueOf() sécurisé
La deuxième méthode populaire de conversion d'une chaîne en nombre en Java est Integer.valueOf(). Extérieurement, elle ressemble à parseInt(), mais retourne un objet Integer, et non un primitif.
public class ValueOfExample { public static void main(String[] args) { String number = "123"; Integer result = Integer.valueOf(number); System.out.println(result); // Sortie : 123 }}Quand utiliser valueOf() ?
- Si vous avez besoin d'un objet
Integerpour des collections (par exemple,List<Integer>). - Si vous travaillez avec
Optionalou Stream API (voir ci-dessous). - Grâce à la mise en cache (pour les nombres de -128 à 127),
valueOf()peut même être plus rapide queparseInt()+ auto-boxing.
Nuance importante :
Si vous avez besoin du primitif int, il est préférable d'utiliser parseInt() — il est environ 10 à 15 % plus rapide car il ne crée pas d'objet wrapper. Mais dans 99 % des applications, cette différence est imperceptible.
Méthode n°3 : Java 8+ et Optional — gestion élégante des erreurs
L'approche moderne de la conversion d'un String en int en Java consiste à utiliser Optional. Elle permet d'éviter les blocs try-catch et de rendre le code plus propre.
import java.util.Optional;
public class OptionalParseExample { public static Optional<Integer> safeParseInt(String str) { try { return Optional.of(Integer.parseInt(str)); } catch (NumberFormatException e) { return Optional.empty(); } }
public static void main(String[] args) { // Analyse réussie safeParseInt("100").ifPresent(System.out::println); // 100