String
Einführung

Eine Zeichenkette oder (aus dem Englischen) ein String ist in der Informatik eine Folge von Zeichen (z. B. Buchstaben, Ziffern, Sonderzeichen und Steuerzeichen) aus einem definierten Zeichensatz. Zeichen können sich in einer Zeichenkette wiederholen, die Reihenfolge der Zeichen ist definiert. Zeichenketten sind somit Sequenzen aus Symbolen mit endlicher Länge.
Die objektorientierte Programmiersprache Java kennt primitive und komplexe Datentypen. Der Datentyp String ist strenggenommen ein komplexer Datentyp. String ist eine Klasse, deshalb wird String auch im Gegensatz zu int oder double groß geschrieben. Eine Variable vom Typ String enthält daher nicht den String selbst, sondern sie enthält einen Verweis auf ein Objekt der Klasse String. Die Klasse String stellt verschiedene Methoden zur Verwaltung der Zeichenketten zur Verfügung.
Eine deutsche Dokumentation aller Methoden ist hier zu finden: http://www.dpunkt.de/java/Referenz/Das_Paket_java.lang/68.html
Deklaration
Jede Variable muss deklariert werden. Auch Variablen vom Datentyp String. Die Deklaration folgt dem bekannten Aufbau:
<Sichtbarkeit (optional)> <Datentyp> <Variablenname>;
public String nachname;
Initialisierung
Variablen mit komplexen Datentypen müssen initialisiert werden. Wird einer komplexen Variable kein Wert zugewiesen, kann es zu dem Fall kommen, dass die Variable im Programmablauf aufgerufen wird und keinen Verweis auf ein Objekt hat. Der Objektzeiger ist dann null und es kommt zur so genannten Null-Pointer-Exception.
Die Initialisierung kann durch die Zuweisung einer anderen Objektreferenz erfolgen:
name = nachname;
Oder es wird ein neues Objekt erzeugt und zugewiesen:
name = new String("Müller");
Zudem bietet das Objekt der Klasse String eine vereinfachte Syntax zur Objekterzeugung:
String name = "Peter";
Hier werden die Zeichenketten in Anführungsstriche geschrieben und der Variablen zugewiesen, ähnlich wie bei primitiven Datentypen.
Vergleichen von Zeichenketten
Überprüfung auf Gleichheit
Eine Überprüfung durch die Vergleichsoperatoren ==
vergleicht nicht den Inhalt zweier Objekte, sondern lediglich deren Referenz. D. h. wenn beide Objekte wirklich auf denselben Platz im Arbeitsspeicher verweisen, dann ist diese Aussage "wahr". Ansonsten nicht.
Um wirklich die inhaltliche Übereinstimmung zweier Zeichenketten zu überprüfen, muss die equals
-Methode der Klasse String eingesetzt werden. Der Aufruf von Methoden auf Objekten erfolgt in der Punktnotation auf den String-Instanzen selbst. Dies gilt übrigens für alle Objekte und nicht nur für Instanzen der Klasse String.
Es gilt folgende Regel:
Primitive Datentypen und Referenzen werden mit ==
, Objekte mit equals
verglichen!
equalsIgnoreCase
Wenn Zeichenketten verglichen werden sollen, ohne dass Groß-/Kleinschreibung zu berücksichtigen ist, muss die Methode equalsIgnoreCase()
eingesetzt werden.
contains
Die Objektmethode contains
testet, ob ein Teilstring (engl. substring) in der Zeichenkette vorkommt, und liefert true, wenn das der Fall ist. So würde:
"Dortmund".contains("mund")
true liefern.
compareTo
Neben der Überprüfung auf Gleichheit kann auch geprüft werden, ob zwei String-Objekte ungleich sind. Die Methode compareTo
liefert einen int-Wert, der kleiner als null ist, wenn ein String lexikalisch kleiner ist als ein Vergleichs-String, null, wenn der String gleich Vergleichs-String ist, und einen Wert größer als null, wenn der String lexikalisch größer ist als der Vergleichs-String.
Beispiele
Beispiel 1
In diesem Beispiel wird die equals-Methode auf dem Objekt name ausgeführt. Als Eingabeparameter erhält die equals-Methode den String "Peter". Der Rückgabeparameter der equals-Methode liefert hier false, da die beiden Namen ungleich sind.
private String name = "Müller";
if (name.equals("Peter")) {
// ...
}
Beispiel 2
private String vorname = "Peter";
private String nachname = "Peter";
if (vorname.equals(nachname)) {
// ...
}
Beispiel 3
Hier wird die equals-Methode direkt auf dem String "Peter" ausgeführt. Als Eingabeparameter wird die Variable name vom Typ String übergeben. Die equals-Methode liefert hier als Rückgabeparameter den Wert false, da die equals-Methode Groß-/Kleinschreibung berücksichtigt.
private String name = "peter";
if ("Peter".equals(name)) {
// ...
}
Beispiel 4
Hier wird die Methode equalsIgnoreCase auf dem Objekt name ausgeführt. Als Eingabeparameter erhält die Methode den String "Peter". Die Methode equalsIgnoreCase liefert hier true, da Groß-/Kleinschreibung nicht berücksichtigt wird.
private String name = "peter";
if (name.equalsIgnoreCase("Peter")) {
// ...
}
Beispiel 5
Die Methode compareTo wird auf dem String-Objekt name ausgeführt. Als Eingabeparameter wird der String "Peter" übergeben. Die Methode compareTo liefert als Rückgabeparameter einen Wert kleiner als null, da "Müller" lexikalisch kleiner als "Peter" ist.
private String name = "Müller";
if (name.compareTo("Peter") > 1) {
// ...
}