Jetzt anmelden...

Login
Passwort
Registrieren

Java Tutorial #20

Die Klasse String in Java

Die Verarbeitung von Strings gehört fest zum Handwerk eines jeden Programmierers. In Java sind Zeichenketten Instanzen der Klasse String. Die API stellt uns viele nützliche Methoden zur Verfügung, die wir uns hier einmal ansehen.

Kommentare [0]

Stefan 01.08.2019

Infos zum Artikel

Kategorie Java
Autor Stefan
Datum 01.08.2019

Thema in Kurzform

// String erstellen
String str = "Hallo Java!";
  • Ein String ist eine Zeichenkette und wird in Java durch ein Objekt der Klasse String repräsentiert.
  • Die Klasse String ist im Paket java.lang, das nicht explizit importiert werden muss.

Einen String erstellen

Wir können einen String auf unterschiedliche Art erstellen. Die Klasse String stellt einige Konstrutoren bereit. Die meisten kommen aber nur selten zum Einsatz.

Da Strings in Java Objekte sind, können Sie natürlicherweise über den new-Operator erzeugt werden:

String str = new String("Hello!");

Weil Strings so häufig gebraucht werden, gibt es in Java eine abkürzende Syntax, um sie zu erstellen:

String str = "Hello!";

Diese Schreibweise erstellt automatisch ein neues String-Objekt und sieht der Erzeugung primitiver Datentypen ganz ähnlich. In gewisser Weise nehmen Strings in Java dadurch eine Sonderstellung ein.

Methoden der Klasse String

Die String-Verarbeitung ist in Java sehr komfortabel und es gibt für nahezu alle Wünsche eine entsprechende Methode. Wir sehen uns nun die wichtigsten nun an:

charAt()

char charAt(int index)

Liefert einen char-Wert zurück, der dem Zeichen an der gewünschten Index-Position entspricht.

String str = "Falconbyte";
char c = str.charAt(1);
System.out.println(c); // a

compareTo()

int compareTo(String anotherString)

Vergleicht einen String mit einem anderen String lexikografisch und liefert einen int-Wert zurück. Der Ergebniswert hat folgende Bedeutung:

kleiner 0: Der String ist lexikografisch kleiner.
gleich 0: Beide Strings sind lexikografisch gleich.
größer 0: Der String ist lexikografisch größer.

String str = "ABC";
String str2 = "AB";
int x = str.compareTo(str2);
System.out.println(x); // 1

concat()

String concat(String str)

Fügt am Ende eines Strings eine Zeichenkette str hinzu und liefert diesen verketteten String zurück.

String str = "Hello ";
String str2 = str.concat("World!");
System.out.println(str2);

Strings sind in Java unabänderlich. Darum bleibt str von concat unberührt! Wir müssen das Ergebnis somit in einer neuen Variablen str2 "auffangen".

contains()

boolean contains(CharSequence s)

Prüft, ob ein String eine bestimmte char-Sequenz hat. Liefert entsprechend true oder false zurück.

String str = "Falconbyte";
System.out.println(str.contains("byte")); // true
System.out.println(str.contains("bit")); // false

endsWith()

boolean endsWith(String suffix)

Liefert true, wenn der String mit dem Wert von suffix endet.

String str = "Falconbyte";
System.out.println(str.endsWith("byte")); // true

startsWith()

boolean endsWith(String prefix)

Liefert true, wenn der String mit prefix anfängt.

String str = "Falconbyte";
System.out.println(str.startsWith("Falcon")); // true

equals()

boolean equals(String anotherString)

Vergleicht zwei Strings miteinander. Wenn sie identisch sind, wird true zurückgeliefert.

String str = "Falconbyte";
System.out.println(str.equals("Falconbyte")); // true
System.out.println(str.equals("FALCONBYTE")); // false

equalsIgnoreCase()

boolean equalsIgnoreCase(String anotherString)

Auch hier werden zwei Strings miteinander verglichen. Allerdings werden hier Groß- und Kleinbuchstaben nicht berücksichtigt.

String str = "Falconbyte";
System.out.println(str.equalsIgnoreCase("Falconbyte")); // true
System.out.println(str.equalsIgnoreCase("FALCONBYTE")); // true

indexOf()

int indexOf(String str)

Durchsucht den String und liefert die erste Position, an der ein Zeichen oder eine Zeichenkette str gefunden wurde. Ist das Zeichen/ die Zeichenkette nicht enthalten, wird -1 zurückgeliefert.

String str = "Falconbyte";
int i = str.indexOf("c"); // 3
int i2 = str.indexOf("byte"); // 6
int i3 = str.indexOf("Z"); // -1

int indexOf(String str, int start)

Alternativ kann die Startposition angegeben werden, ab der die Suche beginnen soll.

String str = "Java Java";
int i4 = str.indexOf("Ja", 4); // 5

length()

int length()

Gibt die Länge des Strings als int-Wert zurück.

String str = "This is Java!";
System.out.println(str.length()); // 13

isEmpty()

boolean isEmpty()

Liefert true, wenn die length() 0 ist.

String str = "";
System.out.println(str.isEmpty()); // true

replace()

String replace(char oldChar, char newChar)

Liefert einen neuen String zurück, in dem alle Zeichen, die oldChar entsprechen, mit dem Zeichen newChar ersetzt wurden.

String str = "Java";
String str2 = str.replace('v', 'V');
System.out.println(str2); // JaVa

String replace(CharSequence target, CharSequence replacement)

Wir können mit replace auch ganze Substrings ersetzen:

String str = "Java";
String str2 = str.replace("va", "pan");
System.out.println(str2); // Japan

Wie oben schon gesagt, sind Strings in Java unveränderbar. Der String in str bekommt von replace nichts mit.

split()

String[] split(String regex)

Eine sehr praktische Methode, die einen String zerlegt und die Einzelteile als String-Array zurückliefert.

Den Trenner können wir frei wählen. Im folgenden Beispiel ist es das Leerzeichen:

String str = "Wasser Feuer Erde Luft";
String[] strA = str.split(" ");

System.out.println(strA[0]); // Wasser
System.out.println(strA[1]); // Feuer
System.out.println(strA[2]); // Erde
System.out.println(strA[3]); // Luft

substring()

String substring(int start)

Liefert einen Teilstring ab Position start zurück.

String str = "Mein Name ist Bond. James Bond.";
String str2 = str.substring(20);
System.out.println(str2); // James Bond.

String substring(int start, int Ende)

Alternativ kann zusätzlich zur Startposition auch die Endposition bestimmt werden.

String str = "Mein Name ist Bond. James Bond.";
String str2 = str.substring(20, 25);
System.out.println(str2); // James

toCharArray()

char[] toCharArray()

Löst einen String nach Einzelzeichen auf und liefert diese in einem char Array zurück.

String str = "Java";
char[] cA = str.toCharArray();

System.out.println(cA[0]); // J
System.out.println(cA[1]); // a
System.out.println(cA[2]); // v
System.out.println(cA[3]); // a

toLowerCase()

String toLowerCase

Wandelt alle Großbuchstaben eines Strings in Kleinbuchstaben um und liefert das Ergebnis als neuen String zurück.

String str = "Java";
String str2 = str.toLowerCase();
System.out.println(str2); // java

toUpperCase()

String toUpperCase

Wandelt alle Kleinnbuchstaben eines Strings in Großbuchstaben um und liefert das Ergebnis als neuen String zurück.

String str = "Java";
String str2 = str.toUpperCase();
System.out.println(str2); // JAVA

trim()

String trim()

Entfernt alle führenden und nachfolgenden Leerzeichen:

String str = " Hallo Java ";
String str2 = str.trim(); // "Hallo Java"

valueOf()

Die statisch überladenen String.valueOf() Methoden liefern String-Repräsentationen eines primitiven Werts oder Objekts.

static String valueOf(...)

String s1 = String.valueOf(7419);
String s2 = String.valueOf(true);
String s3 = String.valueOf(new Mars());

System.out.println(s1); // 7419
System.out.println(s2); // true
System.out.println(s3); // paket1.Mars@2503dbd3

Übungen

einfach

Was wird auf der Konsole ausgegeben?

String s1 = "1";
String s2 = s1.concat("2");
s2.concat("3");
System.out.println(s2);
Lösung ein-/ausblenden

mittel

Welche der folgenden Ausgaben bzw. Fehler produziert dieser Code (Mehrfachauswahl möglich):

String str = "abcdef";
System.out.println(str.length());
System.out.println(str.charAt(3));
System.out.println(str.charAt(6));

A. 5
B. 6
C. c
D. d
E. Exception wird geworfen
F. Code lässt sich nicht compilieren

Lösung ein-/ausblenden

schwer

Ist der folgende Code korrekt? Falls ja: Was wird auf der Konsole ausgegeben?

String s = "Hallo";
s.toUpperCase();
s.trim();
s.substring(1, 3);
s += " Java";
System.out.println(s.length());
Lösung ein-/ausblenden

Kommentar schreiben

Nur angemeldete und aktivierte Benutzer können kommentieren.

Alle Kommentare

Es gibt bislang noch keine Kommentare zu diesem Thema.

Der Konstruktor

Was ist eigentlich ein Konstruktor?

Die Klasse Object

Erfahren Sie alles über die Mutter aller Klassen

Initializer

Eher selten aber praktisch!

FALCONBYTE.NET

Handmade with 🖤️

© 2018, 2019 Stefan E. Heller

Impressum | Datenschutz

facebook programmieren lernen twitter programmieren lernen youtube programmieren lernen