ProgrammierenDatentyp String | |
Ein String ist eine Zeichenkette. Der Datentyp String hat als Wertebereich die Menge aller Zeichenketten. Strings werden in Anführungszeichen gesetzt; Beispiele für Strings sind "abba", "Hallo Fritz!", "@%#&$", "x" sowie auch "". Die Länge eines Strings ist die Anzahl der Zeichen, aus denen er besteht. So hat beispielsweise der String "abba" die Länge 4. Der leere String "" hat die Länge 0, da er 0 Zeichen enthält. Die einzelnen Zeichen eines Strings der Länge n werden von 0 bis n-1 nummeriert.
Das folgende Programmstück zeigt die Deklaration einer Variablen vom Typ String gefolgt von einer Wertzuweisung und anschließender Ausgabe des Strings.
String s; s="Hallo!"; System.out.println(s); |
Der Datentyp String ist in Java kein einfacher Datentyp wie etwa int oder double oder boolean. Eine Variable vom Typ String enthält nicht den String selbst, sondern sie enthält einen Verweis auf ein Objekt vom Typ String. Dies ist deswegen nötig, weil Strings unterschiedliche Längen annehmen können. 1)
Obwohl Strings Objekte sind, sieht die Wertzuweisung syntaktisch genauso aus wie bei den einfachen Datentypen:
s="Hallo!"; |
Noch in einer anderen Hinsicht werden Strings wie einfache Datentypen behandelt. Strings lassen sich nämlich mit dem Operator + verketten.
String r, s, t; r="abc"; s="de"; t=r+s; // Verkettung von r und s System.out.println(t); // Ergebnis: "abcde" |
Strings lassen sich auch mit Werten anderer Datentypen verketten; hierbei werden diese automatisch in String umgewandelt.
int k=3; String s; s="Die Zahl heißt "+k; // Verkettung eines Strings und einer Zahl System.out.println(s); // Ergebnis: "Die Zahl heißt 3" |
Achtung: Ausdrücke mit dem Operator + werden von links nach rechts ausgewertet. Da das Zeichen + auch für die Addition von Zahlen verwendet wird, wird durch die Reihenfolge bei der Auswertung bestimmt, ob Addition oder Verkettung gemeint ist. Gegebenenfalls sind Klammern zu benutzen, um die gewünschte Reihenfolge zu erzwingen.
int k=3; String s; s="Die Zahl heißt "+k+1; // zweimal Verkettung System.out.println(s); // Ergebnis: "Die Zahl heißt 31" s=k+1+" heißt die Zahl"; // einmal Addition und einmal Verkettung System.out.println(s); // Ergebnis: "4 heißt die Zahl" |
Für weitere Operationen mit Strings stehen in der Klasse String eine ganze Reihe von Objektmethoden zur Verfügung. Die Methoden werden immer jeweils auf ein Objekt der Klasse String angewendet.
Die Methode
boolean equals(String s)
prüft, ob zwei Strings gleich sind. Zwar können Strings auch mit dem Vergleichsoperator == verglichen werden. Das Ergebnis ist jedoch verwirrenderweise abhängig davon, wie die beteiligten Strings zustande gekommen sind: etwa durch Zuweisung einer konstanten Zeichenreihe oder als Ergebnis einer String-Funktion. Daher ist zum Vergleich zweier Strings immer die Funktion equals zu verwenden. In folgendem Beispiel sind die Strings beim Vergleich mit == ungleich, beim Vergleich mit equals gleich:
|
|
Die Methode
int length()
ergibt die Länge des Strings.
String s="abc"; int k=s.length(); // k erhält den Wert 3 |
Mit der Methode
String substring(int i, int j)
lässt sich ein Teilstring eines Strings ermitteln. Die Parameter i und j haben folgende Bedeutung: i ist die Startposition des Teilstrings, j ist die Position i+Länge des Teilstrings.
String s="abcdefg"; String t=s.substring(2, 5); // t erhält den Wert "cde" String u=s.substring(k, k+1); // u erhält als Wert das k-te Zeichen von s |
Wird beim Aufruf der Methode substring nur der erste Parameter i angegeben, so ist das Ergebnis der Teilstring von Position i bis zum Ende des Strings. Der Aufruf
String t=s.substring(i); |
bedeutet also dasselbe wie
String t=s.substring(i, s.length()); |
1) Streng genommen wird in Java zwischen String-Konstanten und String-Objekten unterschieden. Dies ist in höchstem Maße verwirrend, weil man einem String nicht ansehen kann, ob er eine String-Konstante oder ein String-Objekt ist. Meist funktioniert aber alles wie erwartet – wichtig ist nur, dass man Strings immer mit der Methode equals vergleicht
Weiter mit: ![]() |
|
|
|