W3docs

Java String-Methoden

Referenz der wichtigsten Java String-Methoden: length, charAt, substring, indexOf, replace, split, toUpperCase, trim und mehr.

Die Klasse String enthält Dutzende von Methoden. Dieses Kapitel ist eine praktische Referenz der am häufigsten verwendeten Methoden, gruppiert nach ihrer Funktion: Untersuchen, Vergleichen, Suchen, Zerlegen, Transformieren, Teilen/Verbinden, Konvertieren und Formatieren.

Wichtig: Strings sind unveränderlich (immutable). Jede der folgenden Methoden gibt einen neuen String (oder einen anderen Wert) zurück — sie ändert den String nicht, auf dem sie aufgerufen wurde. Das bedeutet, ein Aufruf wie s.toUpperCase(); allein bewirkt nichts Nützliches; du musst das Ergebnis speichern:

String s = "hello";
s.toUpperCase();        // result discarded — s is still "hello"
s = s.toUpperCase();    // s is now "HELLO"

Indizes sind nullbasiert und zählen UTF-16-Code-Einheiten, nicht benutzerseitig wahrgenommene Zeichen — das ist relevant für Emojis und andere ergänzende Zeichen.

Einen String untersuchen

MethodeRückgabewert
length()Anzahl der UTF-16-Code-Einheiten
isEmpty()true, wenn die Länge 0 ist
isBlank() (Java 11+)true, wenn die Länge 0 ist oder nur Leerzeichen enthält
charAt(int i)das Zeichen am Index i
codePointAt(int i)der Unicode-Codepunkt am Index i
"hello".length();      // 5
"".isEmpty();          // true
"   ".isBlank();       // true
"hello".charAt(1);     // 'e'

Strings vergleichen

MethodeRückgabewert
equals(other)true, wenn der Inhalt gleich ist
equalsIgnoreCase(other)Gleichheit ohne Berücksichtigung der Groß-/Kleinschreibung
compareTo(other)negativ / 0 / positiv für lexikografische Reihenfolge
compareToIgnoreCase(other)dasselbe, ohne Berücksichtigung der Groß-/Kleinschreibung
"hi".equals("hi");                  // true
"HI".equalsIgnoreCase("hi");        // true
"apple".compareTo("banana");        // negative

Für den Inhaltsvergleich solltest du stets .equals() statt == verwenden (Vergleichsoperatoren). == vergleicht Objekt-Referenzen — ob zwei Variablen auf dasselbe Objekt zeigen — nicht die enthaltenen Zeichen. Da Java String-Literale intern hält (internt), scheint == manchmal zu funktionieren, schlägt aber fehl, sobald ein String zur Laufzeit erstellt wird:

String a = "hi";
String b = "hi";
String c = new String("hi");

a == b;          // true  — both point to the same interned literal
a == c;          // false — c is a different object
a.equals(c);     // true  — same contents

compareTo eignet sich zum Sortieren: Es gibt eine negative Zahl, null oder eine positive Zahl zurück und lässt sich direkt in Collections.sort oder Comparator-Ketten einsetzen.

Suchen

MethodeRückgabewert
contains(seq)true, wenn seq irgendwo vorkommt
indexOf(seq)erster Index, an dem seq beginnt, oder -1
indexOf(seq, fromIndex)dasselbe, beginnend ab fromIndex
lastIndexOf(seq)letzter Index, an dem seq beginnt, oder -1
startsWith(prefix)true, wenn der String mit prefix beginnt
endsWith(suffix)true, wenn der String mit suffix endet
String s = "abc-xyz-abc";
s.contains("xyz");       // true
s.indexOf("abc");        // 0
s.lastIndexOf("abc");    // 8
s.startsWith("abc");     // true
s.endsWith("xyz");       // false

Zerlegen (Slicing)

MethodeRückgabewert
substring(start)vom Index start bis zum Ende
substring(start, end)von start (einschließlich) bis end (ausschließlich)
String s = "Hello, World!";
s.substring(7);        // "World!"
s.substring(7, 12);    // "World"

Negative Indizes sind nicht erlaubt — sie werfen eine StringIndexOutOfBoundsException.

Transformieren

MethodeRückgabewert
toUpperCase()Kopie in Großbuchstaben
toLowerCase()Kopie in Kleinbuchstaben
trim()Kopie ohne führende/nachfolgende ASCII-Leerzeichen
strip() (Java 11+)Kopie ohne führende/nachfolgende Unicode-Leerzeichen
replace(old, new)jedes literal übereinstimmende Vorkommen ersetzt
replaceAll(regex, replacement)Regex-basierter Ersatz
replaceFirst(regex, replacement)Regex, nur erste Übereinstimmung
repeat(n) (Java 11+)der String n-mal wiederholt
concat(other)identisch mit s + other
"  hello  ".strip();                 // "hello"
"banana".replace("a", "_");          // "b_n_n_"
"hello".repeat(3);                   // "hellohellohello"
"abc 123".replaceAll("\\d", "*");    // "abc ***"

Teilen und Verbinden

MethodeRückgabewert
split(regex)Array von Teilstrings
split(regex, limit)dasselbe, aber auf limit Teile begrenzt
String.join(sep, parts...)statische Methode — verbindet mit Trennzeichen
chars()IntStream der UTF-16-Code-Einheiten
lines() (Java 11+)Stream<String> der Zeilen
"a,b,c".split(",");                     // ["a","b","c"]
String.join("-", "a", "b", "c");        // "a-b-c"
String.join(",", List.of("a","b"));     // "a,b"
"line1\nline2\nline3".lines().count();  // 3

split erwartet einen Regex, keinen einfachen String — daher müssen Regex-Metazeichen maskiert werden: Verwende split("\\.") zum Aufteilen an einem wörtlichen Punkt, nicht split(".") (das jedes Zeichen trifft und ein leeres Array zurückgibt). Abschließende leere Strings werden standardmäßig weggelassen; übergib ein negatives limit (z. B. split(",", -1)), um sie beizubehalten.

Konvertierung

MethodeRückgabewert
toCharArray()char[] der Zeichen des Strings
getBytes()UTF-8-Byte-Array (oder Plattformkodierung, je nach Überladung)
String.valueOf(any)statisch — konvertiert jeden Wert in einen String
Integer.parseInt(s)parst einen String in einen int
Double.parseDouble(s)parst einen String in einen double
Boolean.parseBoolean(s)parst einen String in einen boolean
String.valueOf(42);              // "42"
Integer.parseInt("42");          // 42
Double.parseDouble("3.14");      // 3.14
"hello".toCharArray();           // {'h','e','l','l','o'}

Die parse*-Methoden werfen eine NumberFormatException, wenn der Text keine gültige Zahl ist — umschließe Benutzereingaben daher mit try/catch oder validiere sie vorher. Anders als parseInt ist String.valueOf(null) sicher — es gibt den String "null" zurück, anstatt eine Ausnahme zu werfen.

Formatierung

MethodeRückgabewert
String.format(fmt, args...)statisch — printf-ähnlich formatierter String
formatted(args...) (Java 15+)Instanzmethode, entspricht format mit this als fmt
String.format("%s is %d", "Ada", 36);     // "Ada is 36"
"%s is %d".formatted("Ada", 36);          // "Ada is 36"

Eine kombinierte Demonstration

java— editable, runs on the server

Was kommt als nächstes

Java String-Verkettung erläutert +, concat und StringBuilder im Detail — einschließlich der Frage, wann welches Mittel das richtige ist.

Übungen

Übung
Welche Methode gibt true zurück, wenn ein String nur Leerzeichen enthält?
Welche Methode gibt true zurück, wenn ein String nur Leerzeichen enthält?
Was this page helpful?