erstellt 28.01.06; übersetzt 12.04.10, überarbeitet 03.02.20, 21.09.20, 24.10.22; Deutsche Übersetzung Heinrich Gailer
Allgemeine Hinweise: Wir schreiben jedes Programm wie angegeben. Keines dieser Programme erwartet die Eingabe von Daten durch den Anwender. Die Werte, die von den Programmen verwendet werden, sind durch Deklaration und Zuweisungsanweisungen fest kodiert. Das ist normalerweise eine schlechte Form der Programmierung, aber gut genug für jetzt.
Wir schreiben ein Programm, dass ein String
-Objekt erzeugt, das den String "Hello World" (oder einen anderen String) enthält. Wir weisen die Referenz auf das Objekt der Referenzvariablen str1
zu. Dann geben wir jetzt die Zeichen auf dem Bildschirm aus:
System.out.println( str1 );
Wir führen das Programm aus, um sicher zu gehen, dass es so funktioniert, wie wir es erwarten.
Jetzt fügen wir jetzt eine zweite Referenzvariable str2
hinzu. Aber für diese Variable erzeugen wir kein Objekt, auf das sie verweist. Wir fügen dann eine Anweisung hinzu, die die Variable str2
verwendet, als wenn sie eine gültige Objektreferenz enthalten würde.
Wir führen das Programm aus und sehen was passiert:
System.out.println( str2 );
Experimentiert ein bisschen mit dem Programm, um die Vorstellung in Eurem Kopf zu zementieren, dass ein Objekt und dessen Referenzvariable zwei verschiedene Dinge sind und, dass ein Objekt zur Laufzeit erzeugt wird.
Zurück zum Inhaltsverzeichnis.
Wir kompilieren und führen das Programm StringDemo2
dieses Kapitels aus.
class StringDemo2 { public static void main ( String[] args ) { String str; int len; str = new String( "Elementary, my dear Watson!" ); len = str.length(); System.out.println("Die Laenge ist: " + len ); } }
Wir ändern jetzt den String
auf verschiedene Weise und beobachten die Auswirkung auf die berechnete Stringlänge. Fügen dann zusätzliche Leerzeichen auf beiden Seiten des Strings und innerhalb des Strings hinzu; fügen weitere Satzzeichen hinzu; fügen ein Tab-Zeichen ein (ein richtiges Tab-Zeichen, nicht einfach Leerzeichen). Beachtet, dass die Länge des Strings "MMMMMM" die gleiche ist wie von "iiiiii".
Zurück zum Inhaltsverzeichnis.
String
-Methode, die einen neuen String
erzeugt
Es ist oft nützlich unnötige Leerzeichen auf beiden Seiten des Strings zu entfernen.
Die trim()
Methode des String
-Objekts tut das.
Sie erzeugt ein neues String
-Objekt auf der Basis eines vorhandenen Stringobjekts. Dabei hat das neue String
-Objekt alle Zeichen des Originals, bis auf die Leer- und Tab-Zeichen auf beiden Seiten, die entfernt wurden.
Der ursprüngliche String
wird nicht geändert. Zum Beispiel, nachdem die folgenden Anweisungen ausgeführt wurden
String erster = new String(" In einem Loch in der Erde, da lebte ein Hobbit. "); String zweiter; zweiter = erster.trim();
gibt es ein zweites Objekt auf das zweiter
verweist, das die Zeichen
"In einem Loch in der Erde, da lebte ein Hobbit."
enthält. Beachtet, dass die inneren zusätzlichen Leerzeichen erhalten bleiben.
Wir schreiben ein Programm (oder modifizieren das vorherige), das ein neues Stringobjekt erzeugt, indem es ein vorhandenes Stringobjekt auffordert seine trim()
Methode aufzurufen. Dann geben wir die beiden Strings auf dem Bildschirm aus.
Experimentiert mit Leer- und Tab-Zeichen, um festzustellen, was vom Original entfernt wird.
Zurück zum Inhaltsverzeichnis.
substring()
Wir kompilieren und führen das unten stehende Programm aus, um zu sehen ob es funktioniert. Nehmen dann anstelle der 8 einen anderen Wert und überprüfen, ob das Ergebnis das ist, was wir erwarten.
class StringDemo3 { public static void main ( String[] args ) { String str = new String( "Golf is a good walk spoiled." ); // erzeuge das originale Stringobjekt String sub = str.substring(8); // erzeuge ein neues Objekt aus dem Original System.out.println( sub ); } }
String
-Objekte haben noch eine andere Version der substring()
Methode, die wie folgt aussieht:
substring( int startIndex, int endIndex )
Diese Methode erzeugt ein neues Stringobjekt (basierend auf dem ursprünglichen Objekt), das aber nur die Zeichen enthalten wird, die mit startIndex
beginnen und mit endIndex - 1
enden. Daher ist die Länge eines Substrings endIndex - beginIndex
.
Die Methode erzeugt ein völlig neues Objekt: die Zeichen, die es enthält, sind eine Kopie der Zeichen des Originalobjekts. Zum Beispiel:
String str = new String( "Golf is a good walk spoiled." ); // erzeuge das Oiginalobjekt
System.out.println(str.length()); // die Anzahl der Zeichen ist 28
String sub = str.substring(8, 19); // erzeuge ein neues Objekt aus dem Original
erzeugt ein neues Objekt (referenziert von sub
), das die Zeichen
"a good walk" enthält.
Wir modifizieren das Programm, so dass es die substring()
Methode mit unterschiedlichen Parameterwerten aufruft. Experimentiert mit den zwei Parametern, um zu sehen, wie sie funktionieren. Wir versuchen das Folgende:
str.length()-1
str.length()
als zweiten Parameter verwenden?str.length()
z.B. 29 als zweiten Parameter verwenden?Gute Programmierer schreiben Methoden, so dass sie vernünftig mit allen möglichen Eingabewerten umgehen können, auch mit denen, die keinen Sinn ergeben. Und aus guten Gründen der Sicherheit müssen Programmierer damit rechnen, dass manche Anwender bösartig versuchen werden Parameter zu finden, die Probleme oder ein merkwürdiges Verhalten verursachen, das dann irgendwie ausgenützt werden kann.
Zurück zum Inhaltsverzeichnis.
Ende der Aufgaben