Einleitung: Warum quält diese Frage selbst erfahrene Java-Entwickler?
Wenn Sie jemals gegoogelt haben "How do I convert a String to an int in Java?", dann sind Sie nicht allein. Dies ist eine der beliebtesten Fragen auf Stack Overflow mit Millionen von Aufrufen. Es scheint einfach: String nehmen, in Zahl umwandeln – fertig. Aber in der Praxis birgt die Konvertierung von String in int in Java Tücken: von unerwarteten Ausnahmen bis zur Wahl zwischen Leistung und Lesbarkeit des Codes.
In diesem Artikel analysieren wir alle gängigen Methoden zur Umwandlung von String in Zahl in Java, vergleichen sie hinsichtlich Geschwindigkeit, Sicherheit und Benutzerfreundlichkeit. Sie erfahren, wie Sie den klassischen Fehler NumberFormatException vermeiden und erhalten fertige Lösungen für reale Projekte. Los geht's!
Methode Nr. 1: Der Klassiker – Integer.parseInt()
Die gebräuchlichste und schnellste Methode, um String in int in Java zu konvertieren, ist die Verwendung der statischen Methode Integer.parseInt(). Sie nimmt einen String entgegen und gibt den primitiven Typ int zurück.
public class ParseIntExample { public static void main(String[] args) { String number = "42"; int result = Integer.parseInt(number); System.out.println(result); // Ausgabe: 42 }}Vorteile von Integer.parseInt():
- Maximale Leistung – erzeugt keine überflüssigen Objekte.
- Einfachheit – eine Codezeile ohne zusätzliche Wrapper.
- Unterstützung von Zahlensystemen – Sie können eine Basis (Radix) angeben:
Integer.parseInt("ff", 16)gibt 255 zurück.
Nachteile und Fallstricke:
- Enthält der String nicht-numerische Zeichen (Leerzeichen, Buchstaben), wird eine NumberFormatException ausgelöst.
- Behandelt
nullnicht – es kommt zu einerNullPointerException.
// Beispiel für einen Fehler:String badInput = "42abc";int value = Integer.parseInt(badInput); // NumberFormatException!Methode Nr. 2: Sicheres Integer.valueOf()
Die zweite beliebte Methode zur Konvertierung von String in Zahl in Java ist Integer.valueOf(). Äußerlich ähnelt sie parseInt(), gibt aber ein Integer-Objekt zurück, keinen primitiven Typ.
public class ValueOfExample { public static void main(String[] args) { String number = "123"; Integer result = Integer.valueOf(number); System.out.println(result); // Ausgabe: 123 }}Wann sollte man valueOf() verwenden?
- Wenn Sie ein
Integer-Objekt für Sammlungen benötigen (z. B.List<Integer>). - Wenn Sie mit
Optionaloder der Stream API arbeiten (siehe unten). - Aufgrund der Zwischenspeicherung (für Zahlen von -128 bis 127) kann
valueOf()sogar schneller sein alsparseInt()+ Autoboxing.
Wichtiger Hinweis:
Wenn Sie den primitiven Typ int benötigen, verwenden Sie besser parseInt() – er ist etwa 10-15 % schneller, da er kein Wrapper-Objekt erzeugt. In 99 % der Anwendungen ist dieser Unterschied jedoch vernachlässigbar.
Methode Nr. 3: Java 8+ und Optional – elegante Fehlerbehandlung
Ein moderner Ansatz zur Konvertierung von String in int in Java ist die Verwendung von Optional. Er vermeidet try-catch-Blöcke und macht den Code sauberer.
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) { // Erfolgreiches Parsen safeParseInt("100").ifPresent(System.out::println); // 100