Klausur-Tricks
Trick 1, Off-by-one bei Indizes: Index läuft 0..length−1, nicht 1..length. s.charAt(s.length()) ist Exception.
Trick 2, substring(start, end) ist EXKLUSIV: "Hallo".substring(1, 4) → "all", NICHT "alli". Wenn du n Zeichen ab Position k willst → substring(k, k+n).
Trick 3, In Java IMMER .equals(), niemals == für String-Vergleich. Klausuren testen das jedes Semester.
Trick 4, Strings immutable: s.toUpperCase() allein ändert s nicht. s = s.toUpperCase().
Trick 5, indexOf liefert -1 wenn nicht gefunden: niemals an Index −1 zugreifen.
int i = s.indexOf("foo");
if (i != -1) {
s.charAt(i); // sicher
}
Trick 6, Palindrom-Klassiker: Diese beiden Klassiker (Palindrom und Anagramm unten) kombinieren Indexzugriff, Schleifen, Zeichen-Vergleich und ggf. Sortieren, daher tauchen sie oft als kleine Programmieraufgabe in Klausuren auf. Ein Palindrom ist ein String, der sich vorwärts wie rückwärts liest.
boolean isPalindrom(String s) {
return s.equals(new StringBuilder(s).reverse().toString());
}
// Smarter: zwei Pointer
boolean isPalindrom2(String s) {
int i = 0, j = s.length() - 1;
while (i < j) {
if (s.charAt(i) != s.charAt(j)) return false;
i++; j--;
}
return true;
}
Trick 7, Anagramm-Klassiker: zwei Strings sind Anagramme wenn sie dieselben Zeichen in beliebiger Reihenfolge enthalten.
boolean isAnagram(String a, String b) {
if (a.length() != b.length()) return false;
char[] ca = a.toCharArray();
char[] cb = b.toCharArray();
Arrays.sort(ca);
Arrays.sort(cb);
return Arrays.equals(ca, cb);
}
Trick 8, Whitespace und trim(): " Hallo ".trim() → "Hallo". Klausurfrage zur User-Eingabe-Säuberung.
Trick 9, Encoding: ASCII (128 Zeichen, 7 Bit) vs. UTF-8 (variable Länge, alle Sprachen). Java-Strings sind UTF-16-basiert: char ist eine 16-bit Code-Unit, nicht zwingend ein vollständiger Codepoint. s.length() zählt char-Code-Units, nicht sichtbare Zeichen, Emojis brauchen meist zwei chars (Surrogatpaar). Für echte Codepoint-Iteration: s.codePointAt(i) / s.codePoints().
Wo brauchst du Strings?
- User Input: jede Form, jedes Input-Feld liefert Strings
- APIs / JSON: alles wird über Strings serialisiert
- Datenbanken: SQL ist String, Spalten-Typen wie VARCHAR
- Logging / Debugging: jede Print-Ausgabe
- Pfade / URLs: alles strukturierter Text
- Validierung: Email, IBAN, PIN, Passwort, alles String-Check
Faustregel: Strings gehören zu den häufigsten Datentypen, mit denen du als Programmieranfänger arbeitest. Lerne die wichtigsten Methoden auswendig: substring, indexOf, replace, split, equals.