Rheinwerk Computing < openbook > Rheinwerk 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:
- 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
Pfeil 4 Der Umgang mit Zeichenketten
Pfeil 4.1 Von ASCII über ISO-8859-1 zu Unicode
Pfeil 4.1.1 ASCII
Pfeil 4.1.2 ISO/IEC 8859-1
Pfeil 4.1.3 Unicode
Pfeil 4.1.4 Unicode-Zeichenkodierung
Pfeil 4.1.5 Escape-Sequenzen/Fluchtsymbole
Pfeil 4.1.6 Schreibweise für Unicode-Zeichen und Unicode-Escapes
Pfeil 4.1.7 Unicode 4.0 und Java *
Pfeil 4.2 Die Character-Klasse
Pfeil 4.2.1 Ist das so?
Pfeil 4.2.2 Zeichen in Großbuchstaben/Kleinbuchstaben konvertieren
Pfeil 4.2.3 Ziffern einer Basis *
Pfeil 4.3 Zeichenfolgen
Pfeil 4.4 Die Klasse String und ihre Methoden
Pfeil 4.4.1 String-Literale als String-Objekte für konstante Zeichenketten
Pfeil 4.4.2 Konkatenation mit +
Pfeil 4.4.3 String-Länge und Test auf Leerstring
Pfeil 4.4.4 Zugriff auf ein bestimmtes Zeichen mit charAt( )
Pfeil 4.4.5 Nach enthaltenen Zeichen und Zeichenfolgen suchen
Pfeil 4.4.6 Das Hangman-Spiel
Pfeil 4.4.7 Gut, dass wir verglichen haben
Pfeil 4.4.8 Phonetische Vergleiche *
Pfeil 4.4.9 String-Teile extrahieren
Pfeil 4.4.10 Strings anhängen, Groß-/Kleinschreibung und Leerraum
Pfeil 4.4.11 Suchen und ersetzen
Pfeil 4.4.12 String-Objekte mit Konstruktoren neu anlegen *
Pfeil 4.5 Konvertieren zwischen Primitiven und Strings
Pfeil 4.5.1 Unterschiedliche Typen in String-Repräsentationen konvertieren
Pfeil 4.5.2 Stringinhalt in einen primitiven Wert konvertieren
Pfeil 4.5.3 String-Repräsentation im Format Binär, Hex, Oktal *
Pfeil 4.6 Veränderbare Zeichenketten mit StringBuilder und StringBuffer
Pfeil 4.6.1 Anlegen von StringBuilder/StringBuffer-Objekten
Pfeil 4.6.2 StringBuilder/StringBuffer in andere Zeichenkettenformate konvertieren
Pfeil 4.6.3 Zeichen(folgen) erfragen
Pfeil 4.6.4 Daten anhängen
Pfeil 4.6.5 Zeichen(folgen) setzen, löschen und umdrehen
Pfeil 4.6.6 Länge und Kapazität eines StringBuilder/StringBuffer-Objekts *
Pfeil 4.6.7 Vergleichen von String mit StringBuilder und StringBuffer
Pfeil 4.6.8 hashCode() bei StringBuilder/StringBuffer *
Pfeil 4.7 CharSequence als Basistyp *
Pfeil 4.8 Reguläre Ausdrücke
Pfeil 4.8.1 Pattern.matches() bzw. String#matches()
Pfeil 4.8.2 Die Klassen Pattern und Matcher
Pfeil 4.8.3 Finden und nicht matchen
Pfeil 4.8.4 Gierige und nicht gierige Operatoren *
Pfeil 4.8.5 Mit MatchResult alle Ergebnisse einsammeln *
Pfeil 4.8.6 Suchen und Ersetzen mit Mustern
Pfeil 4.8.7 Hangman Version 2
Pfeil 4.9 Zerlegen von Zeichenketten
Pfeil 4.9.1 Splitten von Zeichenketten mit split()
Pfeil 4.9.2 Die Klasse Scanner
Pfeil 4.9.3 Die Klasse StringTokenizer *
Pfeil 4.9.4 BreakIterator als Zeichen-, Wort-, Zeilen- und Satztrenner *
Pfeil 4.10 Zeichenkodierungen, XML/HTML-Entitys, Base64 *
Pfeil 4.10.1 Unicode und 8-Bit-Abbildungen
Pfeil 4.10.2 Das Paket java.nio.charset und der Typ Charset
Pfeil 4.10.3 Konvertieren mit OutputStreamWriter/InputStreamReader-Klassen *
Pfeil 4.10.4 XML/HTML-Entitys ausmaskieren
Pfeil 4.10.5 Base64-Kodierung
Pfeil 4.11 Ausgaben formatieren
Pfeil 4.11.1 Formatieren und Ausgeben mit format()
Pfeil 4.11.2 Die Formatter-Klasse *
Pfeil 4.11.3 Formatieren mit Masken *
Pfeil 4.11.4 Format-Klassen
Pfeil 4.11.5 Zahlen, Prozente und Währungen mit NumberFormat und DecimalFormat formatieren *
Pfeil 4.11.6 MessageFormat und Pluralbildung mit ChoiceFormat
Pfeil 4.12 Sprachabhängiges Vergleichen und Normalisierung *
Pfeil 4.12.1 Die Klasse Collator
Pfeil 4.12.2 Effiziente interne Speicherung für die Sortierung
Pfeil 4.12.3 Normalisierung
Pfeil 4.13 Zum Weiterlesen

Rheinwerk Computing - Zum Seitenanfang

4.3 ZeichenfolgenZur nächsten Überschrift

Ein String ist eine Sammlung von Zeichen (Datentyp char), die die Laufzeitumgebung geordnet im Speicher ablegt. Die Zeichen sind einem Zeichensatz entnommen, der in Java dem 16-Bit-Unicode-Standard entspricht – mit einigen Umwegen ist auch Unicode 4 mit 32-Bit-Zeichen möglich.

Java sieht drei Klassen vor, die Zeichenfolgen verwalten. Sie unterscheiden sich in drei Punkten:

  • Sind die Zeichenfolgen unveränderbar (immutable), können sie also später nicht mehr verändert werden?
  • Sind die Zeichenfolgen später veränderbar (mutable)?
  • Sind die Operationen auf den Zeichenketten gegen nebenläufige Zugriffe aus mehreren Threads abgesichert?

Tabelle 4.5: Die drei Klassen, die Zeichenfolgen verwalten

Verwaltet immutable Zeichenketten Verwaltet mutable Zeichenketten
Threadsicher String StringBuffer
Nicht threadsicher - StringBuilder

Die Klasse String

Die Klasse String repräsentiert nicht änderbare Zeichenketten. (Allgemein heißen Objekte, deren Zustand sich nicht verändern lässt, immutable.) Daher ist ein String immer threadsicher, denn eine Synchronisation ist nur dann nötig, wenn es Änderungen geben kann. Mit Objekten vom Typ String lässt sich nach Zeichen oder Teilzeichenketten suchen, und ein String lässt sich mit einem anderen String vergleichen, aber Zeichen im String können nicht verändert werden. Es gibt einige Methoden, die scheinbar Veränderungen an Strings vornehmen, aber sie erzeugen in Wahrheit neue String-Objekte, die die veränderten Zeichenreihen repräsentieren. So entsteht beim Aneinanderhängen zweier String-Objekte als Ergebnis ein drittes String-Objekt für die zusammengefügte Zeichenreihe.

Die Klassen StringBuilder/StringBuffer

Die Klassen StringBuilder und StringBuffer repräsentieren im Gegensatz zu String dynamische, beliebig änderbare Zeichenreihen. Der Unterschied zwischen den API-gleichen Klassen ist lediglich, dass StringBuffer vor nebenläufigen Operationen geschützt ist, StringBuilder nicht. Die Unterscheidung ist bei Strings nicht nötig, denn wenn Objekte nachträglich nicht veränderbar sind, machen parallele Lesezugriffe keine Schwierigkeiten.

Beispiel

String-Objekte selbst lassen sich nicht verändern, aber natürlich lässt sich eine Referenz auf ein anderes String-Objekt setzen:

String s = "tutego";
s = "TUTEGO";
Mit »verändern« meinen wir hier, dass der Zustand eines Objekts verändert wird, etwa indem das erste Zeichen gelöscht wird. Die Referenz umzubiegen verändert keinen Zustand.

Der Basistyp CharSequence für Zeichenketten

CharSequence ist die gemeinsame Schnittstelle von String, StringBuilder und StringBuffer und wird in der Bibliothk mehrfach verwendet. Nehmen wir ein Beispiel: Die Klasse String deklariert eine Methode contains(CharSequence s), die testet, ob der Teilstring s im String vorkommt. Von welchem Typ kann nun die Variable s sein? Wir können Exemplare etwa von String, StringBuilder oder StringBuffer übergeben, weil dies alles CharSequences sind. Wir steigen später noch etwas genauer in den Typ ein, an dieser Stelle reicht es zu wissen, dass wir uns überall, wo CharSequence steht, String, StringBuilder oder StringBuffer denken können.

Bestehen Strings aus char-Feldern?

Die drei Klassen String, StringBuilder, StringBuffer entsprechen der idealen Umsetzung der objektorientierten Idee (mit der wir uns in Kapitel 5, »Eigene Klassen schreiben«, intensiv auseinandersetzen): Wie genau die Zeichenfolgen gespeichert werden, dringt nicht nach außen. Zwar ist es so, dass die Zeichenfolgen intern als char-Arrays abgebildet werden, aber dieses Feld ist privat und somit sind keine Zugriffe von außen möglich. Selbst die Länge ist ein privates Attribut der Klassen, die nur über eine Methode zugänglich ist. Das Schöne ist also, dass die Klassen uns also die lästige Arbeit abnehmen, selbst Zeichenfolgen in Feldern verwalten zu müssen.



Ihr Kommentar

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

>> Zum Feedback-Formular
<< 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 ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Einstieg in Eclipse






 Einstieg in
 Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in
 Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 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.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de