Kurz: String ist in Java eine Klasse. Strings sind unveränderlich (immutable): Methoden liefern immer einen neuen String.
Teil des Kurses Java
String ist in Java eine Klasse. Strings sind unveränderlich (immutable): Methoden liefern immer einen neuen String.
public class Texte {
public static void main(String[] args) {
String s = "Java macht Spaß";
System.out.println(s.length());
System.out.println(s.charAt(0) + " " + s.indexOf("macht") + " " + s.indexOf("x"));
System.out.println(s.toUpperCase() + " | " + s.toLowerCase());
System.out.println(s.substring(5) + " | " + s.substring(0, 4));
System.out.println(s.replace("a", "4") + " | " + s.contains("Spaß") + " | " + s.startsWith("Java"));
System.out.println(" Leerraum ".trim() + "|" + " Leerraum ".strip() + "|");
System.out.println(String.join(", ", "a", "b", "c") + " " + "ab".repeat(3) + " " + "".isEmpty() + " " + " ".isBlank());
}
}Ausgabe:
15
J 5 -1
JAVA MACHT SPASS | java macht spa?
macht Spa? | Java
J4v4 m4cht Sp4? | true | true
Leerraum|Leerraum|
a, b, c ababab true trueStrings vergleichen
public class Vergleich {
public static void main(String[] args) {
String a = "Hallo";
String b = new String("Hallo");
String c = "Hallo";
System.out.println((a == b) + " " + (a == c) + " " + a.equals(b)); // == vergleicht Adressen!
System.out.println(a.equalsIgnoreCase("HALLO") + " " + a.compareTo("Hallp") + " " + "b".compareTo("a"));
}
}Ausgabe:
false true true
true -1 1Merke: Strings immer mit .equals() vergleichen. == prüft, ob es dasselbe Objekt ist, und liefert wegen des String-Pools zufällig mal true.
Zerlegen und Zusammenbauen
import java.util.Arrays;
public class Teilen {
public static void main(String[] args) {
String csv = "Mia;17;Köln";
String[] teile = csv.split(";");
System.out.println(Arrays.toString(teile) + " " + teile.length);
System.out.println("a1b22c333".replaceAll("[0-9]+", "#"));
System.out.println(Arrays.toString("Hallo Welt".toCharArray()));
char[] zeichen = "Java".toCharArray();
Arrays.sort(zeichen);
System.out.println(new String(zeichen));
}
}Ausgabe:
[Mia, 17, Köln] 3
a#b#c#
[H, a, l, l, o, , W, e, l, t]
JaavStringBuilder: viele Änderungen
Wer in einer Schleife Text aneinanderhängt, erzeugt mit + viele Zwischenobjekte. Der StringBuilder ist veränderlich und effizient:
public class Bauen {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 5; i++) {
sb.append(i).append(i < 5 ? ", " : "");
}
sb.insert(0, "[").append("]");
System.out.println(sb);
System.out.println(sb.reverse() + " " + sb.length());
sb.setLength(0); // leeren
System.out.println(sb.isEmpty());
}
}Ausgabe:
[1, 2, 3, 4, 5]
]5 ,4 ,3 ,2 ,1[ 15
trueTextblöcke und Formatierung
Mit dreifachen Anführungszeichen schreibst du mehrzeiligen Text (ab Java 15):
public class Block {
public static void main(String[] args) {
String json = """
{
"name": "Mia",
"alter": 17
}
""";
System.out.print(json);
String gruss = "Hallo %s, du hast %d Punkte (%.1f%%)".formatted("Mia", 42, 87.5);
System.out.println(gruss);
}
}Ausgabe:
{
"name": "Mia",
"alter": 17
}
Hallo Mia, du hast 42 Punkte (87.5%)Zeichen und Unicode
public class Zeichen {
public static void main(String[] args) {
System.out.println(Character.isDigit('7') + " " + Character.isLetter('ä') + " " + Character.toUpperCase('ß'));
System.out.println((int) 'A' + " " + (char) 97);
String emoji = "A😀"; // Smiley braucht zwei char
System.out.println(emoji.length() + " " + emoji.codePointCount(0, emoji.length()));
System.out.println("straße".toUpperCase());
}
}Ausgabe:
true true ?
65 a
3 2
STRASSEText für Menschen sortieren
import java.text.Collator;
import java.util.*;
public class Sortieren {
public static void main(String[] args) {
List<String> namen = new ArrayList<>(List.of("Zoe", "Ärger", "Anna", "bert"));
Collections.sort(namen);
System.out.println(namen);
namen.sort(Collator.getInstance(Locale.GERMAN));
System.out.println(namen);
}
}Ausgabe:
[Anna, Zoe, bert, ?rger]
[Anna, ?rger, bert, Zoe]Merke
- Strings sind unveränderlich; Methoden liefern neue Strings
- Vergleichen mit
.equals(), nie mit== split,substring,replace,contains,strip,repeat,joinim AlltagStringBuilderfür viele Änderungen; Textblöcke"""für mehrzeiligen TextString.formatted(...)undprintfformatierenCollatorsortiert sprachrichtig
Übungsaufgabe
Schreibe eine Methode, die prüft, ob ein Text ein Palindrom ist (Groß-/Kleinschreibung und Leerzeichen ignorieren), und teste sie mit “Anna” und “Ein Esel lese nie”.
Quiz zur Selbstkontrolle
Wie vergleichst du den Inhalt zweier Strings?
- a.equals(b) (richtig)
- a == b
- a = b
- a.same(b)
Sind Strings in Java veränderlich?
- Nein, Methoden erzeugen neue Strings (richtig)
- Ja
- Nur mit final
- Nur mit var
Wofür ist StringBuilder gut?
- Effizientes Zusammenbauen von Text in Schleifen (richtig)
- Zum Formatieren von Datum
- Zum Lesen von Dateien
- Zum Vergleichen
Weiter im Kurs
Zurück: Operatoren und Ausdrücke
Weiter: Bedingungen: if und switch
Alle Kapitel: Java im Überblick