EMZETT.
Login

Kurz: String ist in Java eine Klasse. Strings sind unveränderlich (immutable): Methoden liefern immer einen neuen String.

Teil des Kurses Java

Kapitel 5 von 22 im Kurs Java. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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, join im Alltag
  • StringBuilder für viele Änderungen; Textblöcke """ für mehrzeiligen Text
  • String.formatted(...) und printf formatieren
  • Collator sortiert 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

Weiter im Kurs

Zurück: Operatoren und Ausdrücke

Weiter: Bedingungen: if und switch

Alle Kapitel: Java im Überblick