Strings in Java Die String Klasse und Methoden
Inhalt Stringklasse in Java - Grundlegende Eigenschaften - Methoden der Stringklasse - vergleichen - suchen - ersetzen - Methoden der Stringbuilder - klasse - einfügen - löschen - verändern - Konvertieren in einen String - Formatangaben Page 2
Stringklasse Eigenschaften - In Java werden Zeichenketten durch die String Klasse repräsentiert - Sie bietet: - Methoden zum Erzeugen von Zeichenketten, - zur Extraktion von Teilstrings, - zum Vergleich mit anderen Strings und - zur Erzeugung von Strings - wichtigste Datenstruktur für Ein- und Ausgabe oder Verarbeitung von Zeichen.
Stringklasse Weitere Eigenschaften - die Klasse String ist mit dem Attribut final belegt. - gesteigerte Effizienz beim Aufruf der Methoden - Compiler kann final -Methoden statisch kompilieren - und dadurch schneller aufrufen - aus der String-Klasse können keine neuen Klassen abgeleitet werden - String-Objekte sind nicht dynamisch : - Die substring-methode z.b erzeugt eine Kopie - Diese wrid dann an den Aufrufer zurückgegeben und s zugewiesen - Originalinstanz wird gelöscht ->bsp Listing1
Stringklasse Immutable - z.b. String und Integer - Objekte dieses Typs können nach ihrer Konstruktion nicht mehr verändert werden (sie sind immutable) Page 5
Konstruktoren Werden verwendet um String-Objekte explizit zu erzeugen. String() - Erzeugt ein leeres String-Objekt. String(String value) - Erzeugt einen neuen String durch Duplizierung eines bereits vorhandenen. String(char[] value) - Erzeugt einen neuen String aus einem vorhandenen Zeichen-Array. Dabei werden alle Elemente des Arrays in den String übernommen.
Zeichenextraktion char charat(int index) throws tringindexoutofboundsexception - Liefert das Zeichen an Position index. - Dabei hat das erste Element eines Strings den Index 0 und das letzte den Index length()-1 String substring(int begin, int end) - Liefert den Teilstring, der an Position begin beginnt und an Position end endet. String trim() - Auf beiden Seiten der Zeichenkette werden jeweils alle zusammenhängenden Leerzeichen entfernt Page 7
Die Länge der Zeichenkette int length() - Liefert die aktuelle Länge des String-Objekts. - Ist der Rückgabewert 0, so bedeutet dies, dass der String leer ist. - Wird ein Wert n größer 0 zurückgegeben, so enthält der String n Zeichen, die an den Indexpositionen 0 bis n - 1 liegen. -> bsp Listing2
Vergleichen von Zeichenketten boolean equals(object anobject) -> bsp Vergleichen1 - testet auf inhaltliche Gleichheit - vergleicht mit der String-Darstellung eines beliebigen Objekts boolean startswith(string s) / endswith(string s) - testet, ob das String-Objekt mit der Zeichenkette s beginnt bzw endet int compareto(string s) - führt einen lexikalischen Vergleich beider Strings durch - Zeichen werden paarweise von links nach rechts verglichen - String-Objekt kleiner als s -> negativer Rückgabewert - Größer-> ein positiver Wert / gleich -> 0 Page 9
Vergleichen von Zeichenketten boolean regionmatches( int toffset, String other, int ooffset, int len ) - vergleicht zwei gleich lange String-Regionen - die in zwei unterschiedlichen Strings an zwei unterschiedlichen Positionen liegen können. ->bsp Listing3 - regionmatches(8, Grüße., 8, Greetings,2); Page 10
Suchen in Zeichenketten int indexof(string s) - sucht das erste Vorkommen der Zeichenkette s innerhalb des Objekts - die Methode gibt den Index der ersten Übereinstimmung zurück sonst -1 int indexof(string s, int fromindex) - beginnt mit der Suche aber erst ab Position fromindex - Rückgabewerte wie indexof() int lastindexof(string s) - sucht nach dem letzten Vorkommen des Teilstrings s - Rückgabewerte wie indexof() Page 11
Ersetzen von Zeichenketten String tolowercase() / String touppercase() - liefert einen String zurück bei dem alle Zeichen in - Kleinbuchstaben bzw. Großbuchstaben umgewandelt werden String replace(charsequence olds, CharSequence news) - Es werden alle Vorkommen der Zeichenkette olds durch news ersetzt - so dass ein Ersetzen von aa durch ab bei aaa zum Resultat aba führt ->bsp: replace1 Page 12
Ersetzen von Zeichenketten string.split("\\s") - Durch split() können Zeichenketten in mehrere Teile zerlegt werden. - '\s' ist hierbei eine Kurzform für alle Arten von»leerzeichen«- '\d' Eine Zahl zwischen 0 und 9 -> bsp Listing4 Page 13
Konvertierungsfunktionen static String valueof(boolean b) - Weitere Typen : char; double ; float; int; long; - wandelt ein primitives Objekt mit Hilfe der Methode tostring - in eine Zeichenkette um Page 14
Die Klasse StringBuilder Da Objekte des Typs String nicht dynamisch sind StringBuilder ab JDK 5 vorher Stringbuffer dynamische Verkettung von String-Objekten möglich Page 15
Konstruktoren StringBuilder() - erzeugt einen leeren StringBuilder StringBuilder(String s) - erstellt ein StringBuilder-Objekt (Kopie der übergebenen Zeichenkette) Page 16
Einfügen von Elementen StringBuilder append(string s) - der String s wird an das Ende des StringBuilder-Objekts angehängt - das verlängerte StringBuilder-Objekt s wird zurückgegeben ->bsp Listing1 StringBuilder insert(int offset, String s) - fügt den String s an der Position offset in den aktuellen StringBuilder ein - das verlängerte StringBuilder-Objekt s wird zurückgegeben Page 17
Löschen von Elementen public StringBuilder deletecharat(int index) - das an Position index stehende Zeichen wird entfernt public StringBuilder delete(int start, int end) - delete entfernt den Teilstring, der von Position start bis end reicht Page 18
Verändern von Elementen void setcharat(int index, char c) - das an Position index stehende Zeichen wird durch Zeichen c ersetzt throws StringIndexOutOfBoundsException - Wird ausgelöst, wenn index hinter dem Ende des Strings ist Page 19
Längeninformationen int length() - Liefert die Anzahl der Zeichen, die im StringBuilder Obj. enthalten sind public int capacity() - Hier wird die Größe des belegten Pufferspeichers ermittelt. - Dieser Wert ist typischerweise größer als der von length zurückgegebene Wert. ->Listing1 Page 20
Konvertierung in einen String String tostring() - Das StringBuilder Objekt wird dieser Methode effizient in einen String umgewandelt - Methode liefert einen Zeiger auf den internen Zeichenpuffer - Erst wenn der StringBuilder erneut verändert werden soll, wird tatsächlich eine Kopie erzeugt Page 21
Die Formatangaben System.out.format("Wert: %3d%n", i); - Es werden zwei Parameter übergeben: - der Formatstring»Wert: %3d%n«und die Schleifenvariable i System.out.format("%b %b %2$b %1$b%n", true, false); -»Argument-Index$«gibt den Bezug auf den Parameter der Formatangabe an -»1$«ist das erste Argument nach dem Formatstring,»2$«zweite usw. - Ohne dies werden die Argumente der Reihe nach zugeordnet Page 22
Die Formatangaben Die wichtigsten»conversion«datentypen: - b - Boolescher Wert - c - Einzelnes Zeichen - d - Ganzzahl in Dezimaldarstellung - o - Ganzzahl in Oktaldarstellung - x - Ganzzahl in Hexadezimaldarstellung - f - Fließkommazahl - e - Fließkommazahl mit Exponent - g - Fließkommazahl in gemischter Schreibweise - t - Prefix für Datums-/Zeitangaben - s - Strings und andere Objekte Page 23
Die Formatangaben Die Zeit und Datum Datentypen: - H - Stunde, zweistellig, im 24-Stunden-Format - M - Minute, zweistellig - S - Sekunde, zweistelli - d - Tag, zweistellig - m - Monat, zweistellig, 1..12 - Y - Jahr, vierstellig - F - Datum, formatiert nach ISO 8601 (YYYY-MM-DD - c - Kompletter Datums-/Zeitstring inkl. Zeitzone Page 24
Die Formatangaben FLAGS - Mit den»flags«können weitere Ausgabeoptionen abgerufen werden - - - Linksbündige Ausgabe - + - Vorzeichen immer ausgegeben - 0 - Zahlen werden mit Nullen aufgefüllt -, - Zahlen werden mit Tausenderpunkten ausgegeben - ( - Negative Zahlen werden in Klammern eingeschlossen Page 25
Quellen: Handbuch der Java-Programmierung, 5. Auflage www.uni-koeln.de