Strings
Strings sind überall: Namen, Eingaben, Fehlermeldungen. Sie sehen einfach aus, haben aber einen berühmten Fallstrick beim Vergleichen.
Ansicht
01
Verstehen
Lies die Kernidee und das Beispiel.
02
Prüfen
Beantworte die Aktiv-Checks.
03
Anwenden
Setze die Transferaufgabe um.
Mini-Erfolg
Du hast zwei Texte korrekt verglichen und einen langen Text mit StringBuilder gebaut.
Warum das wichtig ist: Texte sind überall: Namen, Eingaben, Fehlermeldungen und Ausgaben. Der equals-Fallstrick begegnet fast allen.
Vorher hilfreich
Lerninhalt
Verstehen & anwenden
Erzeugen und vergleichen
Ein String ist ein Objekt und unveränderlich.
Jede Veränderung erzeugt einen neuen String.
== vergleicht bei Strings die Referenz, nicht den Inhalt. Für Inhalte ist equals() fast immer die richtige Wahl.
String a = "Java";
String b = new String("Java");
System.out.println(a == b); // false (andere Objekte)
System.out.println(a.equals(b)); // true (gleicher Inhalt)
String c = "Ja" + "va";
System.out.println(a == c); // true (Compiler optimiert)Texte verändern
Methoden wie length(), toUpperCase(), substring() und replace() liefern neue Strings zurück.
Der Original-String bleibt unverändert. Das ist am Anfang ungewohnt, aber wichtig für das Verständnis.
String name = " Ada Lovelace ";
String sauber = name.trim();
System.out.println(sauber.length()); // 12
System.out.println(sauber.toUpperCase()); // ADA LOVELACE
System.out.println(sauber.substring(0, 3)); // Ada
System.out.println(sauber.replace("Ada", "Grace"));StringBuilder und Formatierung
Wenn du in einer Schleife viele Teile zusammensetzt, ist StringBuilder deutlich effizienter als +.
formatted() setzt Werte sauber in einen Text ein und ist oft lesbarer als lange Verkettungen.
StringBuilder bauen = new StringBuilder();
for (int i = 1; i <= 3; i++) {
bauen.append("Level ").append(i).append(" ");
}
System.out.println(bauen.toString());
String text = "%s hat %d Punkte".formatted("Ada", 42);
System.out.println(text);Vertiefung
Unveränderlich und trotzdem effizient
Strings sind immutable: Jede Methode erzeugt einen neuen String. Deshalb ist text += "x" in einer Schleife teuer, weil jedes Mal ein neues Objekt entsteht.
StringBuilder ist ein veränderbarer Puffer. Für viele Teile ist er die richtige Wahl. Für Vergleiche gilt fast immer equals(), nicht ==.
String a = "Java";
String b = new String("Java");
System.out.println(a == b); // false
System.out.println(a.equals(b)); // true
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 3; i++) sb.append(i).append(" ");
System.out.println(sb.toString().trim()); // 0 1 2Merksatz: Inhalte mit equals(), viele Teile mit StringBuilder. Strings sind unveränderlich — das ist Sicherheit, kostet aber bei Schleifen.
Übungsaufgabe
Palindrom-Checker
Prüfe, ob ein Wort vorwärts und rückwärts gleich ist. Ignoriere dabei Groß-/Kleinschreibung und Leerzeichen.
Das soll dein Programm können
- Den String normalisieren (trim, toLowerCase, Leerzeichen entfernen)
- Mit StringBuilder umdrehen
- Boolean zurückgeben und ausgeben
- Mindestens drei Testwörter
Schreibe den Code hier oder in deiner IDE und vergleiche ihn dann mit der Lösung.
Dein Code wird automatisch auf diesem Gerät gespeichert.
Hinweis anzeigen
Normalisieren: text.toLowerCase().replace(" ", ""). Umdrehen: new StringBuilder(sauber).reverse().toString().
Lösung anzeigen
public class Palindrom {
public static void main(String[] args) {
System.out.println(istPalindrom("Lagerregal"));
System.out.println(istPalindrom("Java"));
System.out.println(istPalindrom("Ein Esel lese nie"));
}
static boolean istPalindrom(String text) {
String sauber = text.toLowerCase().replace(" ", "");
String umgedreht = new StringBuilder(sauber).reverse().toString();
return sauber.equals(umgedreht);
}
}Warum funktioniert das?
Nach dem Normalisieren vergleichst du mit equals, nicht mit ==. Der StringBuilder dreht den Inhalt um, ohne viele neue Zwischenstrings zu erzeugen.
Aktiv-Check
Teste dein Verständnis
Erkennen: Welcher Abschnitt passt?
Welcher Abschnitt passt zu diesen Begriffen?
Spaßprojekt
Passwort-Checker
Prüfe, ob ein Passwort lang genug ist, eine Zahl enthält und nicht „passwort“ heißt. Gib eine verständliche Rückmeldung aus.
Selbstcheck
Kann ich das schon?
Hake ab, was du wirklich erklären oder selbst bauen könntest.
Fortschritt
Bereit zum Abschließen?
Markiere die Lektion als abgeschlossen, um XP und Streak zu erhalten.