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 Objektorientierte Beziehungsfragen
7 Ausnahmen müssen sein
8 Äußere.innere Klassen
9 Besondere Typen der Java SE
10 Generics<T>
11 Lambda-Ausdrücke und funktionale Programmierung
12 Architektur, Design und angewandte Objektorientierung
13 Komponenten, JavaBeans und Module
14 Die Klassenbibliothek
15 Einführung in die nebenläufige Programmierung
16 Einführung in Datenstrukturen und Algorithmen
17 Einführung in grafische Oberflächen
18 Einführung in Dateien und Datenströme
19 Einführung ins Datenbankmanagement mit JDBC
20 Einführung in <XML>
21 Testen mit JUnit
22 Bits und Bytes und Mathematisches
23 Die Werkzeuge des JDK
A Java SE-Paketübersicht
Stichwortverzeichnis


Download:

- Beispielprogramme, ca. 35,4 MB


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

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 Java-Versionen gehen mit Unicode-Standard Hand in Hand *
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 Leer-String
Pfeil 4.4.4 Zugriff auf ein bestimmtes Zeichen mit charAt(int)
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 String-Teile extrahieren
Pfeil 4.4.9 Strings anhängen, zusammenfügen, Groß-/Kleinschreibung und Leerraum
Pfeil 4.4.10 Gesucht, gefunden, ersetzt
Pfeil 4.4.11 String-Objekte mit Konstruktoren erzeugen *
Pfeil 4.5 Veränderbare Zeichenketten mit StringBuilder und StringBuffer
Pfeil 4.5.1 Anlegen von StringBuilder-/StringBuffer-Objekten
Pfeil 4.5.2 StringBuilder/StringBuffer in andere Zeichenkettenformate konvertieren
Pfeil 4.5.3 Zeichen(folgen) erfragen
Pfeil 4.5.4 Daten anhängen
Pfeil 4.5.5 Zeichen(folgen) setzen, löschen und umdrehen
Pfeil 4.5.6 Länge und Kapazität eines StringBuilder-/StringBuffer-Objekts *
Pfeil 4.5.7 Vergleichen von String mit StringBuilder und StringBuffer
Pfeil 4.5.8 hashCode() bei StringBuilder/StringBuffer *
Pfeil 4.6 CharSequence als Basistyp
Pfeil 4.7 Konvertieren zwischen Primitiven und Strings
Pfeil 4.7.1 Unterschiedliche Typen in String-Repräsentationen konvertieren
Pfeil 4.7.2 String-Inhalt in einen primitiven Wert konvertieren
Pfeil 4.7.3 String-Repräsentation im Format Binär, Hex, Oktal *
Pfeil 4.7.4 parseXXX(…)- und printXXX()-Methoden in DatatypeConverter *
Pfeil 4.8 Strings zusammenhängen (konkatenieren)
Pfeil 4.8.1 Strings mit StringJoiner
Pfeil 4.9 Zerlegen von Zeichenketten
Pfeil 4.9.1 Splitten von Zeichenketten mit split(…)
Pfeil 4.9.2 Yes we can, yes we scan – die Klasse Scanner
Pfeil 4.10 Ausgaben formatieren
Pfeil 4.10.1 Formatieren und Ausgeben mit format()
Pfeil 4.11 Zum Weiterlesen
 

Zum Seitenanfang

4.2Die Character-Klasse Zur vorigen ÜberschriftZur nächsten Überschrift

Die im Kernpaket java.lang angesiedelte Klasse Character bietet eine große Anzahl statischer Methoden, die im Umgang mit einzelnen Zeichen interessant sind. Dazu gehören Methoden zum Testen, etwa ob ein Zeichen eine Ziffer, ein Buchstabe oder ein Sonderzeichen ist.

 

Zum Seitenanfang

4.2.1Ist das so? Zur vorigen ÜberschriftZur nächsten Überschrift

Allen Testmethoden ist gemeinsam, dass sie mit der Vorsilbe is beginnen und ein boolean liefern. Dazu gesellen sich Methoden zum Konvertieren, etwa in Groß-/Kleinschreibung.

Ein paar Beispiele:

Ausdruck

Ergebnis

Character.isDigit( '0' )

true

Character.isDigit( '-' )

false

Character.isLetter( 'ß' )

true

Character.isLetter( '0' )

false

Character.isWhitespace( ' ' )

true

Character.isWhitespace( '-' )

false

Tabelle 4.5Ergebnisse einiger isXXX()-Methoden

Alle diese Methoden »wissen« über die Eigenschaften der einzelnen Unicode-Zeichen Bescheid. Und der Codepoint jedes Unicode-Zeichens ist immer der gleiche, egal, ob ein Programm in Deutschland oder in der Mongolei ausgeführt wird.

Testen, ob eine Zeichenkette nur aus Ziffern besteht

Im folgenden Beispiel wollen wir die Methode deklarieren, die einen String abläuft und testet, ob der String nur aus Ziffern besteht. Obwohl so eine Funktionalität in der Praxis nützlich ist, bietet Java SE dafür keine simple Methode.

Listing 4.1IsNumeric.java

public class IsNumeric {



/**

* Returns {@code true} if the String contains only Unicode digits.

* An empty string or {@code null} leads to {@code false}.

*

* @param string Input String.

* @return {@code true} if string is numeric, {@code false} otherwise.

*/

public static boolean isNumeric( String string ) {

if ( string == null || string.length() == 0 )

return false;



for ( int i = 0; i < string.length(); i++ )

if ( ! Character.isDigit( string.charAt( i ) ) )

return false;



return true;

}



public static void main( String[] args ) {

System.out.println( isNumeric( "1234" ) ); // true

System.out.println( isNumeric( "12.4" ) ); // false

System.out.println( isNumeric( "-123" ) ); // false

}

}

Es ist so definiert, dass null und ein leerer String nicht als numerisch angesehen werden, allerdings lässt sich auch definieren, dass null zu einer Ausnahme führen soll und der leere String durchaus numerisch ist. Konventionen wie diese liegen beim Autor der Bibliothek, und unterschiedliche Utility-Bibliotheken mit solchen Hilfsfunktionen haben dort unterschiedliche Vorstellungen.

Das Beispiel nutzt zwei String-Methoden: length() liefert die Länge eines Strings, und charAt(int) liefert das Zeichen an der gewünschten Stelle. Eine Schleife iteriert über den String und testet jedes Zeichen mit isDigit(…); ist ein Zeichen keine Ziffer, verlässt return false automatisch die Schleife. Läuft die Schleife erfolgreich durch, kann ein return true vermelden, dass jedes Zeichen eine Ziffer war.

Die wichtigsten isXXX(…)-Methoden im Überblick

final class java.lang.Character

implements Serializable, Comparable<Character>

Wortwahl

Ein Leerzeichen ist in diesem Buch nur das Zeichen ' ', das die Leertaste generiert. Es hat den ASCII-Code 32, in Unicode \u0020. Der Begriff Weißraum steht dafür für alles das, was Leerraum schafft, also Leerzeichen, Tabulator, Return usw.

 

Zum Seitenanfang

4.2.2Zeichen in Großbuchstaben/Kleinbuchstaben konvertieren Zur vorigen ÜberschriftZur nächsten Überschrift

Zum Konvertieren eines Zeichens in Groß-/Kleinbuchstaben deklariert die Character Klasse die Methoden toUpperCase(…) und toLowerCase(…). Die testenden isXXX(…)-Methoden finden oft Anwendung beim Ablaufen einer Zeichenkette.

Unser nächstes Beispiel fragt den Benutzer nach einem String. Gültige Buchstaben sollen in Großbuchstaben konvertiert werden, und jeder Weißraum soll durch einen Unterstrich ersetzt werden. Zum Ablaufen der Eingabe nutzen wir wieder die schon bekannten String-Methoden length() und charAt(int):

Listing 4.2UppercaseWriter.java

public class UppercaseWriter {



public static void main( String[] args ) {

String input = new java.util.Scanner( System.in ).nextLine();



for ( int i = 0; i < input.length(); i++ ) {

char c = input.charAt( i );

if ( Character.isWhitespace( c ) )

System.out.print( '_' );

else if ( Character.isLetter( c ) )

System.out.print( Character.toUpperCase( c ) );

}

}

}

Wenn die Eingabe etwa »honiara brotherhood guesthouse1« ist, ist die Ausgabe »HONIARA_BROTHERHOOD_GUESTHOUSE«. Die »1« verschwindet, weil sie weder Weißraum noch ein Buchstabe ist.

final class java.lang.Character

implements Serializable, Comparable<Character>
  • static char toUpperCase(char ch)

  • static char toLowerCase(char ch)

    Die statischen Methoden liefern den passenden Groß- bzw. Kleinbuchstaben zurück.

[»]Hinweis

Die Methoden toUpperCase(…) und toLowerCase(…) gibt es zweimal: einmal als statische Methoden bei Character – dann nehmen sie genau ein char als Argument – und einmal als Objektmethoden auf String-Exemplaren.

Vorsicht ist bei Character.toUpperCase('ß') geboten, denn das Ergebnis ist »ß«, anders als bei der String-Methode "ß".toUpperCase(), die das Ergebnis »SS« liefert; einen String, der um eins verlängert ist.

 

Zum Seitenanfang

4.2.3Ziffern einer Basis * Zur vorigen ÜberschriftZur nächsten Überschrift

Die Character-Klasse besitzt ebenso eine Umwandlungsmethode für Ziffern bezüglich einer beliebigen Basis:

final class java.lang.Character

implements Serializable, Comparable<Character>
  • static int digit(char ch, int radix)

    Liefert den numerischen Wert, den das Zeichen ch unter der Basis radix besitzt. Beispielsweise ist Character.digit('f', 16) gleich 15. Erlaubt ist jedes Zahlensystem mit einer Basis zwischen Character.MIN_RADIX (2) und Character.MAX_RADIX (36). Ist keine Umwandlung möglich, beträgt der Rückgabewert –1.

  • static char forDigit(int digit, int radix)

    Konvertiert einen numerischen Wert in ein Zeichen. Beispielsweise ist Character.forDigit(6, 8) gleich »6« und Character.forDigit(12, 16) ist »c«.

Es ist bedauerlich, dass die Radix immer mit angegeben werden muss, obwohl er in der Regel immer 10 ist. Eine überladene statische Methode wäre hier angebracht.

[zB]Beispiel

Steht in einem Zeichen c zum Beispiel '3' und soll aus diesem die Ganzzahl 3 werden, so besteht die traditionelle Art darin, eine '0' abzuziehen. Die ASCII-Null '0' hat den char-Wert 48, '1' dann 49, bis '9' schließlich 57 erreicht. So ist logischerweise '3' - '0' = 51 – 48 = 3. Die digit(…)-Methode ist dazu eine Alternative. Wir nutzen sie in einem kleinen Beispiel, um eine Zeichenkette mit Ziffern schließlich in eine Ganzzahl zu konvertieren.

char[] chars = { '3', '4', '0' };

int result = 0;

for ( char c : chars ) {

result = result * 10 + Character.digit( c, 10 );

System.out.println( result );

}

Die Ausgabe ist 3, 34 und 340.

 


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 9-Standard-Bibliothek

Java SE 9-Standard-Bibliothek




Zum Katalog: Professionell entwickeln mit Java EE 8

Professionell entwickeln mit Java EE 8




Zum Katalog: Entwurfsmuster

Entwurfsmuster




Zum Katalog: IT-Projektmanagement

IT-Projektmanagement




 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2017

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