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 true
Strings 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 1
Merke: 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] Jaav
StringBuilder: 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 true
Textblö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 STRASSE
Text 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
Aufgabe
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".