Galileo Computing < openbook >Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Exceptions
7 Äußere.innere Klassen
8 Besondere Klassen der Java SE
9 Generics<T>
10 Architektur, Design und angewandte Objektorientierung
11 Die Klassenbibliothek
12 Einführung in die nebenläufige Programmierung
13 Einführung in Datenstrukturen und Algorithmen
14 Einführung in grafische Oberflächen
15 Einführung in Dateien und Datenströme
16 Einführung in die <XML>-Verarbeitung mit Java
17 Einführung ins Datenbankmanagement mit JDBC
18 Bits und Bytes und Mathematisches
19 Die Werkzeuge des JDK
A Die Klassenbibliothek
Stichwort

Download:
- openbook, ca. 24,5 MB
- Aufgaben, ca. 1,1 MB
- Programme, ca. 12,8 MB
Buch bestellen
Ihre Meinung?

Spacer
Java ist auch eine Insel von Christian Ullenboom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
Galileo Computing
1308 S., 10., aktualisierte Auflage, geb., mit DVD
ca. 49,90 Euro, ISBN 978-3-8362-1802-3
Pfeil4 Der Umgang mit Zeichenketten
Pfeil4.1 Von ASCII über ISO-8859-1 zu Unicode
Pfeil4.1.1 ASCII
Pfeil4.1.2 ISO/IEC 8859-1
Pfeil4.1.3 Unicode
Pfeil4.1.4 Unicode-Zeichenkodierung
Pfeil4.1.5 Escape-Sequenzen/Fluchtsymbole
Pfeil4.1.6 Schreibweise für Unicode-Zeichen und Unicode-Escapes
Pfeil4.1.7 Unicode 4.0 und Java *
Pfeil4.2 Die Character-Klasse
Pfeil4.2.1 Ist das so?
Pfeil4.2.2 Zeichen in Großbuchstaben/Kleinbuchstaben konvertieren
Pfeil4.2.3 Ziffern einer Basis *
Pfeil4.3 Zeichenfolgen
Pfeil4.4 Die Klasse String und ihre Methoden
Pfeil4.4.1 String-Literale als String-Objekte für konstante Zeichenketten
Pfeil4.4.2 Konkatenation mit +
Pfeil4.4.3 String-Länge und Test auf Leerstring
Pfeil4.4.4 Zugriff auf ein bestimmtes Zeichen mit charAt( )
Pfeil4.4.5 Nach enthaltenen Zeichen und Zeichenfolgen suchen
Pfeil4.4.6 Das Hangman-Spiel
Pfeil4.4.7 Gut, dass wir verglichen haben
Pfeil4.4.8 Phonetische Vergleiche *
Pfeil4.4.9 String-Teile extrahieren
Pfeil4.4.10 Strings anhängen, Groß-/Kleinschreibung und Leerraum
Pfeil4.4.11 Suchen und ersetzen
Pfeil4.4.12 String-Objekte mit Konstruktoren neu anlegen *
Pfeil4.5 Konvertieren zwischen Primitiven und Strings
Pfeil4.5.1 Unterschiedliche Typen in String-Repräsentationen konvertieren
Pfeil4.5.2 Stringinhalt in einen primitiven Wert konvertieren
Pfeil4.5.3 String-Repräsentation im Format Binär, Hex, Oktal *
Pfeil4.6 Veränderbare Zeichenketten mit StringBuilder und StringBuffer
Pfeil4.6.1 Anlegen von StringBuilder/StringBuffer-Objekten
Pfeil4.6.2 StringBuilder/StringBuffer in andere Zeichenkettenformate konvertieren
Pfeil4.6.3 Zeichen(folgen) erfragen
Pfeil4.6.4 Daten anhängen
Pfeil4.6.5 Zeichen(folgen) setzen, löschen und umdrehen
Pfeil4.6.6 Länge und Kapazität eines StringBuilder/StringBuffer-Objekts *
Pfeil4.6.7 Vergleichen von String mit StringBuilder und StringBuffer
Pfeil4.6.8 hashCode() bei StringBuilder/StringBuffer *
Pfeil4.7 CharSequence als Basistyp *
Pfeil4.8 Reguläre Ausdrücke
Pfeil4.8.1 Pattern.matches() bzw. String#matches()
Pfeil4.8.2 Die Klassen Pattern und Matcher
Pfeil4.8.3 Finden und nicht matchen
Pfeil4.8.4 Gierige und nicht gierige Operatoren *
Pfeil4.8.5 Mit MatchResult alle Ergebnisse einsammeln *
Pfeil4.8.6 Suchen und Ersetzen mit Mustern
Pfeil4.8.7 Hangman Version 2
Pfeil4.9 Zerlegen von Zeichenketten
Pfeil4.9.1 Splitten von Zeichenketten mit split()
Pfeil4.9.2 Die Klasse Scanner
Pfeil4.9.3 Die Klasse StringTokenizer *
Pfeil4.9.4 BreakIterator als Zeichen-, Wort-, Zeilen- und Satztrenner *
Pfeil4.10 Zeichenkodierungen, XML/HTML-Entitys, Base64 *
Pfeil4.10.1 Unicode und 8-Bit-Abbildungen
Pfeil4.10.2 Das Paket java.nio.charset und der Typ Charset
Pfeil4.10.3 Konvertieren mit OutputStreamWriter/InputStreamReader-Klassen *
Pfeil4.10.4 XML/HTML-Entitys ausmaskieren
Pfeil4.10.5 Base64-Kodierung
Pfeil4.11 Ausgaben formatieren
Pfeil4.11.1 Formatieren und Ausgeben mit format()
Pfeil4.11.2 Die Formatter-Klasse *
Pfeil4.11.3 Formatieren mit Masken *
Pfeil4.11.4 Format-Klassen
Pfeil4.11.5 Zahlen, Prozente und Währungen mit NumberFormat und DecimalFormat formatieren *
Pfeil4.11.6 MessageFormat und Pluralbildung mit ChoiceFormat
Pfeil4.12 Sprachabhängiges Vergleichen und Normalisierung *
Pfeil4.12.1 Die Klasse Collator
Pfeil4.12.2 Effiziente interne Speicherung für die Sortierung
Pfeil4.12.3 Normalisierung
Pfeil4.13 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

4.7 CharSequence als Basistyp *Zur nächsten Überschrift

Bisher kennen wir die Klassen String, StringBuilder und StringBuffer, um Zeichenketten zu speichern und weiterzugeben. Ein String ist ein Wertobjekt und ein wichtiges Hilfsmittel in Programmen, da durch ihn unveränderliche Zeichenkettenwerte repräsentiert werden, während StringBuilder/StringBuffer veränderliche Zeichenfolgen umfassen.

Aber wie sieht es aus, wenn eine Teilzeichenkette gefordert ist, bei der es egal sein soll, ob das Original als String-, StringBuffer oder StringBuilder-Objekt vorliegt? Und was ist, wenn nur lesender Zugriff gestattet sein soll, sodass Veränderungen ausgeschlossen sind? Eine Lösung ist, alles als ein String-Objekt zu erwarten (und das macht die Java-Bibliothek auch). Doch dann müssen die Programmteile, die intern mit StringBuilder/StringBuffer arbeiten, erst einen neuen String konstruieren, und das kostet Ressourcen.

Zum Glück besitzen die Klassen String sowie StringBuilder/StringBuffer einen gemeinsamen Basistyp CharSequence. CharSequence steht für eine unveränderliche, nur lesbare Sequenz von Zeichen (Schnittstellen und Basistypen sowie Implementierungen werden präziser in Abschnitt 5.13, »Schnittstellen«, vorgestellt). Methoden müssen sich also nicht mehr für konkrete Klassen entscheiden, sondern können einfach ein CharSequence-Objekt als Argument akzeptieren oder als Rückgabe weitergeben. Ein String und ein StringBuilder/StringBuffer-Objekt können zwar mehr, als CharSequence vorschreibt, beide lassen sich aber als CharSequence einsetzen, wenn das »Mehr« an Funktionalität nicht benötigt wird.

Abbildung

Abbildung 4.5: Einige implementierende Klassen von der Schnittstelle CharSequence

interface java.lang.CharSequence
  • char charAt(int index)
    Liefert das Zeichen an der Stelle index.
  • int length()
    Gibt die Länge der Zeichensequenz zurück.
  • CharSequence subSequence(int start, int end)
    Liefert eine neue CharSequence von start bis end.
  • String toString()
    Gibt einen String der Sequenz zurück. Die Länge des toString()-Strings entspricht genau der Länge der Sequenz.
Beispiel

Soll eine Methode eine Zeichenkette bekommen und ist die Herkunft egal, so implementieren wir etwa

void giveMeAText( CharSequence s )
{
...
}
statt der beiden Methoden:

void giveMeAText( String s )
{
...
}

void giveMeAText( StringBuffer s )
{
void giveMeAText( new String(s) ); // oder Ähnliches
}

Anwendung von CharSequence in String

In den Klassen String und StringBuilder/StringBuffer existiert eine Methode subSequence(), die ein CharSequence-Objekt liefert. Die Signatur ist in beiden Fällen die gleiche. Die Methode macht im Prinzip nichts anderes als ein substring(begin, end).

class java.lang.String implements CharSequence, ...
class java.lang.
StringBuffer implements CharSequence, ...
class java.lang.
StringBuilder implements CharSequence, ...
  • CharSequence subSequence(int beginIndex, int endIndex)
    Liefert eine neue Zeichensequenz von String beziehungsweise StringBuffer.

Die Implementierung sieht so aus, dass mit substring() ein neuer Teilstring zurückgeliefert wird. Das ist eine einfache Lösung, aber nicht unbedingt die schnellste. Für String-Objekte ist das Erzeugen von Substrings ziemlich schnell, da die Methode speziell optimiert ist. Da Strings unveränderlich sind, wird einfach das gleiche char-Feld wie im Original-String verwendet, nur eine Verschiebung und ein Längenwert werden angepasst. Zur Optimierung siehe auch den Tuning-Hinweis in Abschnitt 4.4.12.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.







<< zurück
  Zum Katalog
Zum Katalog: Java ist auch eine Insel





Java ist auch eine Insel
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java 7 – Mehr als eine Insel





 Java 7 –
 Mehr als eine Insel


Zum Katalog: Android 3






 Android 3


Zum Katalog: Android-Apps entwickeln






 Android-Apps
 entwickeln


Zum Katalog: NetBeans Platform 7






 NetBeans
 Platform 7


Zum Katalog: Einstieg in Eclipse 3.7






 Einstieg in
 Eclipse 3.7


Zum Katalog: Einstieg in Java






 Einstieg
 in Java


Zum Katalog: Einstieg in Java 7






 Einstieg in
 Java 7


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de