Literatur

Strings und StringBuffer

String

String ist einer der am meisten verwendeten Datentypen in Java. In einer Variablen mit dem Datentyp String werden Zeichenketten gespeichert. Zeichenketten werden in Java immer in doppelte Anführungszeichen gesetzt. Die Länge einer Zeichenkette ist variabel. Ein String-Objekt kann mit dem new-Operator erzeugt werden. Der new-Operator ist aber nicht zwingend erforderlich, da er bei der ersten Zuweisung ansonsten implizit aufgerufen wird.

Beispiel:

//Deklaration und Initialisierung eines Strings über den new-Operator
String zeichenkette1 = new String("Einfacher Text");
// Deklaration und direkte Zuweisung einer einfachen Zeichenkette
String zeichenkette2 = "Einfacher Text";

Eine Zeichenkette ist im Prinzip nichts anderes als ein Array von einzelnen Zeichen (char).  Deswegen ist zu beachten, dass auch hier, ebenso wie bei Arrays, das erste Zeichen den Index 0 hat. Daher entspricht der Index des letzten Elementes nicht der Länge der Zeichenkette, sondern der Länge-1. Ansonsten kann man auch hier eine java.lang.ArrayIndexOutOfBoundsException bekommen.

Die Klasse String bietet zahlreiche Methoden. Wir wollen nur einige ausgewählte hier aufführen.

equals

Der Gleichheitsoperator "==", wie man ihn bei numerischen Datentypen einsetzt, kann nicht auf Strings angewendet werden. Daher stellt der Datentyp String  die Methode equals zur Verfügung, mit der man zwei Zeichenketten auf inhaltliche Gleichheit überprüfen kann. Bei Gleichheit wird "true" zurückgegeben, ansonsten "false".  Zeichenketten, die Sich nur in der Groß- und Kleinschreibung unterscheiden, werden als ungleich betrachtet (case-sensitive).

Beispiel:

String passwort1 = "x4593kfn";
String passwort2 = "x4893kfn";
// Die Passwörter werden mit equals auf Gleichheit überprüft
if (passwort1.equals(passwort2))
{
   System.out.println("Die Passwörter sind gleich!");
}
else
{
   System.out.println("Die Passwörter stimmen nicht überein!");
}

 

length

Mit der Methode length kann ermittelt werden, aus wie vielen Zeichen eine Zeichenkette besteht.

String zeichenkette = "0123456789";
int laenge = zeichenkette.length();  //laenge = 10

 

trim

Die Methode trim schneidet bei einer Zeichenkette sowohl führende als auch abschließende Leerzeichen ab.

Beispiel:

String mitLeerzeichenAussen = "    Die Leerzeichen müssen weg    ";
// äußere Leerzeichen werden entfernt
String ohneLeerzeichenAussen = mitLeerzeichenAussen.trim();

Wichtig zu beachten ist, dass die Methode trim den gekürzten String zurückgibt. Die Variable mitLeerzeichenAussen aus dem obigen Beispiel bleibt unverändert.

 

indexOf

Mit indexOf wird ermittelt, an welcher Stelle in einer Zeichenkette eine andere Zeichenkette oder ein Buchstabe beginnt. Diese Funktion ist beispielsweise sehr hilfreich, wenn man in einem Text z.B. nach dem Vorkommen von bestimmten Wörtern suchen will. indexOf gibt den Index (beginnend bei 0) wieder, an dem die gesuchte Zeichenkette beginnt. Wird der String nicht gefunden, so wird -1 zurückgegeben.

Beispiel:

String text= "Dies ist ein Text, in dem ein Suchwort vorkommt";
String search = "Suchwort";
int position = text.indexOf(search );  // postion = 30

 

substring

Mit der Methode substring wird aus einem String ein Teilstring zurückgegeben. Als Parameter wird der Startindex und die Länge ab dem Startindex angegeben.

Beispiel:

String ganzerString = "Radiergummi";
String teilString1 = ganzerString .substring(0,6);  // teilString1 = "Radier";
String teilString2 = ganzerString .substring(6);  // teilString2 = "gummi";

 

toUpperCase / toLowerCase

Um einen String aus Kleinbuchstaben in Großbuchstaben oder umgekehrt zu verwandeln, bietet Java die Methoden toUpperCase bzw. toLowerCase.

Beispiel:

String str = "hello world";
System.out.println(str.toUpperCase());  // gibt "HELLO WORLD" aus

Wichtig zu beachten ist auch hier, wie bei der Methode trim, dass die Methode toUpperCase bzw. toLowerCase die in Großbuchstaben umgewandelte Zeichenkette zurückgibt. In dem obigen Beispiel bleibt die Variable str selbst unverändert.

 

Verkettung von Zeichenketten (Konkatenation)

Um mehrere Zeichenketten miteinander zu verbinden, kann entweder die Funktion concat oder der + Operator verwendet werden.

Beispiel:

String part1 = "java";
String sep = "-";
String part2 = "tutorial";
String name = part1.concat(sep).concat(part2);
System.out.println(name + ".org");  // gibt "java-tutorial.org" aus

Soll eine String-Variable durch eine Konkatenation verändert werden, so kann die Zuweisung durch den "+="-Operator vereinfacht werden.

Beispiel:

String welcomeMsg = "Hello ";
welcomeMsg += "My Friend!";  /* Vereinfachung von welcomeMsg = welcomeMsg + "My Friend"; */
System.out.println(welcomeMsg);  // gibt "Hello My Friend!" aus

 

StringBuffer

Neben dem Datentypen String gibt es für den Umgang mit Zeichenketten den Datentyp StringBuffer. Dieser Datentyp wird jedoch eher selten verwendet. StringBuffer unterscheidet sich von String darin, dass die Klasse StringBuffer Methoden bietet, um die Zeichenketten zu manipulieren, wie z.B. append(), insert(), delete(), setCharAt(), trimToSize() …. Während beim Aufruf der oben vorgestellten Methoden in der Klasse String immer neue String-Objekte erzeugt werden, werden in der Klasse StringBuffer die Veränderungen an demselben Objekt durchgeführt.  StringBuffer muss explizit mit dem new-Operator erzeugt werden.

Beispiel:

StringBuffer buf = new StringBuffer("Willkommen ");
buf.append("auf java-tutorial.org!");  /* StringBuffer-Objekt wird durch eine Zeichenkette erweitert */
buf.insert(0, "Herzlich ");  /* String wird bei Index 0 eingefügt */
System.out.println(buf);  /* gibt "Herzlich Willkommen auf java-tutorial.org!" aus */

Alle Funktionen von String und StringBuffer hier zu erläutern, würde den Rahmen sprengen. Eine Auflistung aller Methoden findet sich in der Java-Dokumentation.