Skip to content

Kapitel 13: String Klasse

🎯 Lernziele

  • String Grundlagen
  • Häufige String-Methoden (Länge, Suchen, Ersetzen, Teilen)
  • StringBuffer & StringBuilder
  • String Übungsaufgaben

13.1 String Grundlagen

📝 Was ist String?

String = Text (Folge von Zeichen). In Java ist String eine Klasse, keine primitive Datentyp!

🔧 String erstellen

java
// Methode 1: String-Literal (empfohlen)
String s1 = "Hallo Welt!";

// Methode 2: new String()
String s2 = new String("Hallo Welt!");

⚠️ Wichtig: Strings sind unveränderlich (Immutable)!

java
String s = "Hallo";
s = s + " Welt!";  // Neues String-Objekt wird erstellt!
System.out.println(s);  // "Hallo Welt!"

→ Original-String bleibt unverändert!

13.2 String häufige Methoden

MethodeBeschreibungBeispiel
length()Länge des Strings"Hallo".length()5
charAt(index)Zeichen an Position"Hallo".charAt(0)'H'
substring(start, end)Teilstring extrahieren"Hallo".substring(1,4)"all"
contains(seq)Enthält Teilstring?"Hallo".contains("all")true
indexOf(seq)Index von Teilstring"Hallo".indexOf("ll")2
replace(old, new)Ersetzen"Hallo".replace("H","B")"Ballo"
toUpperCase()Großschreibung"Hallo".toUpperCase()"HALLO"
toLowerCase()Kleinschreibung"Hallo".toLowerCase()"hallo"
trim()Leerzeichen entfernen" Hallo ".trim()"Hallo"
split(regex)String teilen"a,b,c".split(","){"a","b","c"}
equals(other)Vergleichen (Inhalt)s1.equals(s2)
==Vergleichen (Referenz)s1 == s2 (Achtung!)

📋 Beispiel: Häufige String-Methoden

java
public class StringBeispiel {
    public static void main(String[] args) {
        String s = "  Hallo Welt!  ";
        
        System.out.println("Länge: " + s.length());           // 16
        System.out.println("Groß: " + s.trim().toUpperCase()); // HALL WELT!
        System.out.println("Enthält 'Welt'? " + s.contains("Welt")); // true
        System.out.println("Ersetzen: " + s.replace("Welt","Java")); // "  Hallo Java!  "
        
        String[] wörter = s.trim().split(" ");
        for (String w : wörter) {
            System.out.println(w);  // "Hallo", "Welt!"
        }
    }
}

⚠️ Achtung: equals() vs. ==!

java
String s1 = new String("Hallo");
String s2 = new String("Hallo");

System.out.println(s1 == s2);        // false! (Referenz-Vergleich)
System.out.println(s1.equals(s2)); // true! (Inhalts-Vergleich)

→ Immer equals() für String-Vergleich verwenden!

13.3 StringBuffer & StringBuilder

🔄 Problem: String ist unveränderlich (ineffizient bei vielen Änderungen)

java
String s = "Hallo";
for (int i = 0; i < 10000; i++) {
    s += i;  // Jedes Mal neues String-Objekt → Langsam!
}

✅ Lösung: StringBuilder (schneller, nicht thread-safe)

java
StringBuilder sb = new StringBuilder("Hallo");
for (int i = 0; i < 10000; i++) {
    sb.append(i);  // Ändert existierendes Objekt → Schnell!
}
String ergebnis = sb.toString();

🔢 StringBuffer vs. StringBuilder

KlasseThread-safe?Geschwindigkeit
StringBuffer✅ Ja (synchronisiert)Langsamer
StringBuilder❌ NeinSchneller (empfohlen!)

📋 Beispiel: StringBuilder

java
public class StringBuilderBeispiel {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        
        sb.append("Hallo");
        sb.append(" ");
        sb.append("Welt!");
        sb.insert(5, " schöne");  // Bei Index 5 einfügen
        sb.delete(5, 12);  // Zeichen 5-11 löschen
        
        System.out.println(sb.toString());  // "Hallo Welt!"
    }
}

13.4 String Übungsaufgaben

🏋️ Übung 1: Palindrom überprüfen

Aufgabe: Prüfe, ob ein String ein Palindrom ist (vorwärts & rückwärts gleich).

Lösung:

java
public class Palindrom {
    public static void main(String[] args) {
        String s = "Anna";
        String umgekehrt = new StringBuilder(s.toLowerCase()).reverse().toString();
        
        if (s.toLowerCase().equals(umgekehrt)) {
            System.out.println(s + " ist ein Palindrom!");
        } else {
            System.out.println(s + " ist kein Palindrom!");
        }
    }
}

🏋️ Übung 2: Zeichen zählen

Aufgabe: Zähle, wie oft der Buchstabe 'a' in einem String vorkommt.

Lösung:

java
public class ZeichenZaehlen {
    public static void main(String[] args) {
        String s = "Hallo Welt! Anna";
        int count = 0;
        
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == 'a' || s.charAt(i) == 'A') {
                count++;
            }
        }
        
        System.out.println("'a'/'A' kommt " + count + " mal vor.");  // 3
    }
}

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • ✅ String = Text (unveränderlich!)
  • ✅ Häufige Methoden: length(), charAt(), substring(), contains(), indexOf(), replace(), split(), equals()
  • StringBuilder für effiziente String-Änderungen
  • equals() für String-Vergleich (nicht ==!)

💡 Merksatz für Anfänger

"Strings sind unveränderlich! Nutze StringBuilder für viele Änderungen. Vergleiche Strings mit equals(), nicht ==!"

🎯 Nächste Schritte

Im nächsten Kapitel lernst du:

  • Collection Framework (Einstieg) (Kapitel 14)
  • Was sind Collections? Unterschied zu Arrays
  • ArrayList verwenden
  • Häufige Collection-Methoden

Bereit für Collections? Los geht's! 🚀


📚 Weiterführende Links:

💬 Fragen?
Hinterlassen Sie einen Kommentar!

Frei für alle Anfänger