Strings in Java
Genau wie Arrays sind auch Strings Objekte. Wenn Sie mit Strings arbeiten, sind einige syntaktische Shortcuts ebenso verwendbar wie bei den Arrays, einschließlich einfache Initialisierung und die Benutzung des +Operators für Verkettung. Alternativ können Sie die Methode concat verwenden, um zwei Strings zu verketten.
Sie können z.B. folgenden intuitiven Stil verwenden
- String text1 = „George“;
- String text2 = „Phil“;
- String finalText = text1 + ‘’ and ‘’ + text2;
- System.out.println(finalText);
oder den formalen Stil benutzen:
- String text1 = new String („George“);
- String text2 = new String („Phil“);
- String finalText = new String(text1);
- finalText = finalText.concat ( ‘’ and ‘’);
- finalText = finalText.concat (text2);
- System.out.println(finalText);
Die Ausgabe dieser beiden Beispiele ist dieselbe, nämlich „George and Phil“. Diese Beispiele zeigen Ihnen zwei Wege auf, wie Strings initialisiert werden – entweder mit einfachen Anführungszeichen der String-Buchstaben oder mit Allokation einer Instanz einer String-Klasse unter Verwendung des Operators new. Wenn Sie einmal Ihre Strings erstellt haben, dann können Sie diese durch viele Methoden, die von den String-Klassen unterstützt werden, erweitern.
Zum Thema „Shortcuts“ möchten wir Sie auf folgendes hinweisen: Auf den ersten Blick sieht es zwar so aus, daß es funktioniert, aber nicht auf den zweiten. Sie können das Gleichheitszeichen verwenden, um die Inhalte von zwei String-Objekten miteinander zu vergleichen, z.B.:
- if (text1 == text2)
Normalerweise überprüft dieses Statement, ob der Referenzwert (z.B. die Speicheradresse) in text1 dieselbe ist wie in text2 – also ab die beiden Variablen sich auf dasselbe String-Objekt beziehen. Um die Inhalte der beiden String-Objekte vergleichen zu können, müssen Sie die Methode Equals verwenden:
- if (text1.equals(text2))
Diese Methode gibt Ihnen true zurück, wenn der text1 und der text2- String dieselben Werte haben. RPG hat keinen reinen String-Datentyp, der ähnlich zu den Java String-Klassen ist. In RPG können Sie ein Feld als fixed-length character definieren oder ein Array von fixed-length character Feldelementen bestimmten, wie z.B.:
- Dmystring S 40A INZ(‘AnnaLisa’) Dmystring2 S 10A INZ(‘20’)
Der große Unterschied zu Java besteht in der Verwendung der unterstützten Methode der String-Klasse, mit der Sie String-Objekte behandeln können. In RPG benutzen Sie String Opcodes und Built-In Funktionen. Die Tabelle in Abbildung 5 listet mit den entsprechenden Java Methoden die RPG Opcodes’ und Funktionen auf. Sollte keine korrespondierende Java-Methode aufgeführt sein, können Sie selbst eine Funktion schreiben, die diese Funktion simuliert. Lassen Sie uns einige dieser RPG und Java Operationen und Beispiele, die in der Tabelle aufgeführt sind, untersuchen. Sie werden sehen, daß Java viel mehr Methoden zur Verfügung stellt, um String-Behandlungen durchzuführen, als Ihnen die RPG Opcodes und Funktionen bieten können (Beachten Sie bitte auch Abbildung 11 für den remainder der Java String-Methoden).
Verkettung
Stellen Sie sich vor, daß Sie ein Vornamen-Feld und ein Nachnamen-Feld verketten möchten und das Ergebnis ausgedruckt werden soll. Abbildung 6 zeigt Ihnen RPG und Java Codings, die diese Aufgabe erfüllen. In RPG verkettet der CAT die Felder und der DSPLY Opcode zeigt das Ergebnis an. In Java benutzen wir das String-Objekt, um folgende drei Variablen zu deklarieren: first, last und name. Wir verwenden die Methode concat, um den last an dem first anzuhängen. Beachten Sie, daß first als Qualifier für den Aufruf der Methode concat verwendet wird und last als Parameter für concat dient. Das Ergebnis dieser Operation wird in die Variable name gesetzt. Wir zeigen das Resultat mit Hilfe der Methode println an. Sowohl RPG als auch Java unterstützen für die String-Verkettung in Ausdrücken den +Operator. Abbildung 7 ersetzt den RPG CAT Opcode des vorangegangenen Beispiels mit einem EVAL-Ausdruck, der wiederum den +Operator verwendet und die Java Methode concat durch den +Operator ersetzt.
Substring
Lassen Sie uns als nächstes einen Blick auf den RPG SUBST Opcode und die zugehörige Javamethode substring werfen. In RPG verwenden wir SUBST, um aus einem String einen Substring abzuleiten, der an einer speziellen Stelle startet und eine spezielle Länge besitzt. In Abbildung 8 beginnen wir mit dem String „Because Java is for RPG Pgmrs“ und zeigen verschiedene Wege, um den String „Java is for RPG“ zu erhalten. Um dies zu realisieren, deklarieren wir drei verschiedene Character Felder und ein Feld, in dem des Ergebnis dargestellt werden soll. Der SUBST Opcode, in Faktor 1, stellt die Zahlen der Characters in das Substring und stellt sowohl die Quelle als auch die Startposition für das Ergebnis bereit. Nachdem wir alle Werte erhalten haben, verketten wir diese und erhalten folgendes Ergebnis: „Java is for RPG“. Der Java-Code in Abbildung 8 führt dieselbe Operation durch, und zwar unter Verwendung der String Klassenmethode Substring. Die Methoden-Parameter von Substring sind der Anfang und das Ende.
Wie auch immer, seien Sie vorsichtig!
- Java String-Positionen sind „null-basierend“, nicht „eins-basierend“ wie in RPG
- Der zweite Parameter ist die Position nach der Endposition im Substring
Die Suche nach dem Substring
Eine der gebräuchlichsten Funktionen in fast allen Sprachen ist die Fähigkeit, mit einem String nach dem Vorhandensein eines anderen zu suchen. In RPG können Sie den SCAN Opcode dafür verwenden. In Java benutzen Sie die indexOf-Methode der String-Klasse, damit Sie nach einem speziellen Substring oder character suchen können (Abbildung 9). Die Methode indexOf benötigt einen oder zwei Parameter. Der erste ist der String, nach dem wir suchen und der optionale zweite ist die (null-basierende) Position, bei der wir die Suche starten. Wenn wir nicht einen Startpunkt festlegen, dann wird der Startwert auf die erste character-Position gesetzt (hier: null). In unserem Beispiel wird der Wert 12 ausgedruckt (der 13. Buchstabe). Sie können außerdem auch die lastIndexOf Methode der String-Klasse verwenden, um die Suche am Ende des Strings zu beginnen.
Trimming – Blanks
Trimming nennt man den Prozeß, mit dem Sie führende oder angehängte Blanks aus einem String entfernen können und sowohl RPG als auch Java besitzen dafür eine Unterstützung. Der RPG Code in Abbildung 10 benutzt die built-in Funktion %TRIM für den EVAL Opcode, um die Blanks aus dem Feld zu entfernen. Nach dieser Operation enthält das temp Feld folgendes: „Trimmed: „Java for RPG users““.
In Java können Sie die entsprechend benannte trim Methode verwenden, wie Sie in Abbildung 10 sehen können. Das Resultat ist: „Trimmed: Java is for RPG users.““. Was passiert, wenn Sie nur die führenden Lücken oder die angehängten Blanks löschen wollen? RPG besitzt die built-in Funktionen %TRIM und %TRIMR, um die linken und rechten Blanks zu trimmen. Java hat keine äquivalenten Methoden, aber Sie können Ihre eigenen Methoden schreiben. Das folgende Beispiel trimmt die Blanks am Ende eines Strings:
- str = („x2 + str).trim().substring(1);
Die Bestimmung der Stringlänge
Sie benötigen die Länge eines Strings beispielsweise, um feststellen zu können, ob er leer ist oder eine Verkürzung benötigt. Dies ist in RPG und Java eine einfache Aufgabe. In RPG IV verwenden Sie einfach die built-in Funktion %LEN, indem Sie ein Feld oder einen String-Buchstaben als Parameter spezifizieren. Die Funktion gibt entweder die deklarierte Feldgröße oder die aktuelle String-Länge zurück. Um jetzt die „getrimmte“ Länge zu erhalten, können Sie %LEN mit %TRIM kombinieren, und zwar wie folgt:
- %LEN(%TRIM(“ abc „))
Das Resultat ist 3.
Wenn Sie eine „variierende“ character-Feld Länge in V4R2 spezifizieren möchten, dann gibt LEN die aktuelle Nummer des characters im Feld zurück, nicht nur die deklarierte Größe. In Java können Sie die Methode length auf Ihr String-Objekt anwenden, und zwar wie folgt:
- String myString = “ abc „, int theLen = myString.length();
Dieser Code gibt die Anzahl der Buchstaben in einem String zurück, hier 9. Beachten sie, daß length eine Methode ist, die sich von der Variable length, die Sie mit den Arrays verwenden, unterscheidet. Wie in RPG können Sie in Java trim und length kombinieren, damit Sie eine „getrimmte“ Länge erhalten:
- myString.trim().length()
Bedenken Sie, daß Sie eine Methode aufrufen können, die ein String-Objekt zurückgibt und diesen zurückgegebenen Wert direkt als Qualifizierer für einen zweiten Methodenaufruf verwenden können.
Noch mehr String-Spaß!
RPG und Java unterstützten beide noch viel mehr String Funktionen, die Sie auch selbst entdecken können. Abbildung 11 faßt die Methoden zusammen, die in der Java String-Klasse möglich sind und noch nicht in Abbildung 5 verwendet werden.
Nächstes Mal werden wir uns detaillierter auf Objekte und Objekt-orientierte Funktionalität in Java stürzen. Wir werden die Methoden Kapselung, Vererbung und Polymorphismus so einkapseln, das Sie keiner mehr sehen wird (nur ein Witz!).
![Künstler Burgy Zapp [http://burgyzapp.de]](http://newsolutions.de/it/wp-content/uploads//pa2_lab_IMG_0046_Dr.X_nf_o-300x300.jpg)


