22
Zeichenketten Gerd Bohlender Institut f¨ ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 1/9

Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Zeichenketten

Gerd Bohlender

Institut fur Angewandte undNumerische Mathematik

Vorlesung: Einstieg in die Informatik mit Java

16. Mai 2007

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 1 / 9

Page 2: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Ubersicht

1 Zeichenketten

2 Erzeugen von Zeichenketten

3 Operatoren fur Zeichenketten

4 Methoden zur Bearbeitung von Zeichenketten

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 2 / 9

Page 3: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Zeichenketten

Im Gegensatz zu C sind Zeichenketten in Java Objekte und keinechar–Felder.

Dabei kann zwischen konstanten und variablen Zeichenkettenunterschieden werden.

Konstante Zeichenketten sind Objekte der Klasse String, variableZeichenketten sind Objekte der Klasse StringBuffer.

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 3 / 9

Page 4: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Erzeugen von Zeichenketten

Zeichenketten lassen sich durch eine direkte Zuweisung oder durch Aufrufdes Konstruktors der Klasse String erzeugen.

Beispiel

String s1 = "aha";String s2 = new String ("aha");

String ist konstant, Referenz ist variabel

String s = "aha";s = "nanu";

s 6→ aha

s → nanu

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 4 / 9

Page 5: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Erzeugen von Zeichenketten

Zeichenketten lassen sich durch eine direkte Zuweisung oder durch Aufrufdes Konstruktors der Klasse String erzeugen.

Beispiel

String s1 = "aha";String s2 = new String ("aha");

String ist konstant, Referenz ist variabel

String s = "aha";s = "nanu";

s 6→ aha

s → nanu

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 4 / 9

Page 6: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Erzeugen von Zeichenketten

Zeichenketten lassen sich durch eine direkte Zuweisung oder durch Aufrufdes Konstruktors der Klasse String erzeugen.

Beispiel

String s1 = "aha";String s2 = new String ("aha");

String ist konstant, Referenz ist variabel

String s = "aha";s = "nanu";

s 6→ aha

s → nanu

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 4 / 9

Page 7: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Erzeugen von Zeichenketten

Zeichenketten lassen sich durch eine direkte Zuweisung oder durch Aufrufdes Konstruktors der Klasse String erzeugen.

Beispiel

String s1 = "aha";String s2 = new String ("aha");

String ist konstant, Referenz ist variabel

String s = "aha";s = "nanu";

s 6→ aha

s → nanu

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 4 / 9

Page 8: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Erzeugen von Zeichenketten

Zeichenfelder lassen sich nur durch Ubergabe an den Konstruktor derKlasse String in Zeichenketten umwandeln. Eine direkte Zuweisungist nicht erlaubt.

Objekte (insbesondere Felder und Instanzen von Klassen) konnen mitHilfe der Methode toString() in eine Zeichenkette umgewandeltwerden; hierbei wird allerdings nur eine wenig aussagekraftige interneDarstellung des Objekts erzeugt.

Beliebige Typen konnen mit Hilfe der Stringkonkatenation inZeichenketten umgewandelt werden.

Beispiel

char[] c_array = {’a’, ’h’, ’a’};String s3 = new String (c_array); // ergibt "aha"int i = 123;String s4 = "" + i; // ergibt "123"

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 5 / 9

Page 9: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Erzeugen von Zeichenketten

Zeichenfelder lassen sich nur durch Ubergabe an den Konstruktor derKlasse String in Zeichenketten umwandeln. Eine direkte Zuweisungist nicht erlaubt.

Objekte (insbesondere Felder und Instanzen von Klassen) konnen mitHilfe der Methode toString() in eine Zeichenkette umgewandeltwerden; hierbei wird allerdings nur eine wenig aussagekraftige interneDarstellung des Objekts erzeugt.

Beliebige Typen konnen mit Hilfe der Stringkonkatenation inZeichenketten umgewandelt werden.

Beispiel

char[] c_array = {’a’, ’h’, ’a’};String s3 = new String (c_array); // ergibt "aha"int i = 123;String s4 = "" + i; // ergibt "123"

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 5 / 9

Page 10: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Erzeugen von Zeichenketten

Zeichenfelder lassen sich nur durch Ubergabe an den Konstruktor derKlasse String in Zeichenketten umwandeln. Eine direkte Zuweisungist nicht erlaubt.

Objekte (insbesondere Felder und Instanzen von Klassen) konnen mitHilfe der Methode toString() in eine Zeichenkette umgewandeltwerden; hierbei wird allerdings nur eine wenig aussagekraftige interneDarstellung des Objekts erzeugt.

Beliebige Typen konnen mit Hilfe der Stringkonkatenation inZeichenketten umgewandelt werden.

Beispiel

char[] c_array = {’a’, ’h’, ’a’};String s3 = new String (c_array); // ergibt "aha"int i = 123;String s4 = "" + i; // ergibt "123"

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 5 / 9

Page 11: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Erzeugen von Zeichenketten

Zeichenfelder lassen sich nur durch Ubergabe an den Konstruktor derKlasse String in Zeichenketten umwandeln. Eine direkte Zuweisungist nicht erlaubt.

Objekte (insbesondere Felder und Instanzen von Klassen) konnen mitHilfe der Methode toString() in eine Zeichenkette umgewandeltwerden; hierbei wird allerdings nur eine wenig aussagekraftige interneDarstellung des Objekts erzeugt.

Beliebige Typen konnen mit Hilfe der Stringkonkatenation inZeichenketten umgewandelt werden.

Beispiel

char[] c_array = {’a’, ’h’, ’a’};String s3 = new String (c_array); // ergibt "aha"int i = 123;String s4 = "" + i; // ergibt "123"

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 5 / 9

Page 12: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Operatoren fur Zeichenketten

Achtung

Die Umwandlung von Zeichenketten in ganze Zahlen bzw.Gleitkomazahlen geschieht uber spezielle Hullklassen!

Die Stringkonkatenation + verknupft zwei Zeichenketten miteinander.

Die Verknupfung ist auch mit Hilfe des kombiniertenZuweisungsoperators += moglich.

Ein Test auf Gleichheit bzw. Ungleichheit der Referenzen kann mitHilfe von == bzw. != durchgefuhrt werden. Es findet dabei keininhaltlicher Vergleich statt. Trotzdem kann dieser gutgehen, da derKompiler nach Moglichkeit die gleiche Zeichenkette nur einmalabspeichert.

Besser ist der Vergleich mit equals() oder compareTo(), sieheunten.

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 6 / 9

Page 13: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Operatoren fur Zeichenketten

Achtung

Die Umwandlung von Zeichenketten in ganze Zahlen bzw.Gleitkomazahlen geschieht uber spezielle Hullklassen!

Die Stringkonkatenation + verknupft zwei Zeichenketten miteinander.

Die Verknupfung ist auch mit Hilfe des kombiniertenZuweisungsoperators += moglich.

Ein Test auf Gleichheit bzw. Ungleichheit der Referenzen kann mitHilfe von == bzw. != durchgefuhrt werden. Es findet dabei keininhaltlicher Vergleich statt. Trotzdem kann dieser gutgehen, da derKompiler nach Moglichkeit die gleiche Zeichenkette nur einmalabspeichert.

Besser ist der Vergleich mit equals() oder compareTo(), sieheunten.

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 6 / 9

Page 14: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Operatoren fur Zeichenketten

Achtung

Die Umwandlung von Zeichenketten in ganze Zahlen bzw.Gleitkomazahlen geschieht uber spezielle Hullklassen!

Die Stringkonkatenation + verknupft zwei Zeichenketten miteinander.

Die Verknupfung ist auch mit Hilfe des kombiniertenZuweisungsoperators += moglich.

Ein Test auf Gleichheit bzw. Ungleichheit der Referenzen kann mitHilfe von == bzw. != durchgefuhrt werden. Es findet dabei keininhaltlicher Vergleich statt. Trotzdem kann dieser gutgehen, da derKompiler nach Moglichkeit die gleiche Zeichenkette nur einmalabspeichert.

Besser ist der Vergleich mit equals() oder compareTo(), sieheunten.

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 6 / 9

Page 15: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Operatoren fur Zeichenketten

Achtung

Die Umwandlung von Zeichenketten in ganze Zahlen bzw.Gleitkomazahlen geschieht uber spezielle Hullklassen!

Die Stringkonkatenation + verknupft zwei Zeichenketten miteinander.

Die Verknupfung ist auch mit Hilfe des kombiniertenZuweisungsoperators += moglich.

Ein Test auf Gleichheit bzw. Ungleichheit der Referenzen kann mitHilfe von == bzw. != durchgefuhrt werden. Es findet dabei keininhaltlicher Vergleich statt. Trotzdem kann dieser gutgehen, da derKompiler nach Moglichkeit die gleiche Zeichenkette nur einmalabspeichert.

Besser ist der Vergleich mit equals() oder compareTo(), sieheunten.

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 6 / 9

Page 16: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Operatoren fur Zeichenketten

Achtung

Die Umwandlung von Zeichenketten in ganze Zahlen bzw.Gleitkomazahlen geschieht uber spezielle Hullklassen!

Die Stringkonkatenation + verknupft zwei Zeichenketten miteinander.

Die Verknupfung ist auch mit Hilfe des kombiniertenZuweisungsoperators += moglich.

Ein Test auf Gleichheit bzw. Ungleichheit der Referenzen kann mitHilfe von == bzw. != durchgefuhrt werden. Es findet dabei keininhaltlicher Vergleich statt. Trotzdem kann dieser gutgehen, da derKompiler nach Moglichkeit die gleiche Zeichenkette nur einmalabspeichert.

Besser ist der Vergleich mit equals() oder compareTo(), sieheunten.

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 6 / 9

Page 17: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Operatoren fur Zeichenketten

Beispiele

String s5 = "Willi";s5 += "am"; // ergibt s5="William"

String s6 = "Anja";s7 = "Anja";

s6 → Anja ← s7

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 7 / 9

Page 18: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Operatoren fur Zeichenketten

Beispiele

String s5 = "Willi";s5 += "am"; // ergibt s5="William"

String s6 = "Anja";s7 = "Anja";

s6 → Anja ← s7

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 7 / 9

Page 19: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Methoden zur Bearbeitung von Zeichenketten

Die folgenden Methoden erfordern allesamt die objektorientierte Schreibweise:

Syntax: Variable.Methode (Argumente);

Methode Beschreibung Argumenttyp Ergebnistypequals(s) Vergleicht Zeichenketten String boolean

inhaltlich miteinander.length() Ermittelt Lange int

der Zeichenkette.charAt(i) Greift ein Zeichen raus. int char

substring(i,j) Greift Teilzeichenkette raus i: int String

(Zeichen i bis j-1) j: intreplace(c1,c2) Ersetzt Zeichen c1 c1: char String

durch Zeichen c2. c2: charindexOf(s) Liefert Index eines Zeichens char, String int

oder einer Teilzeichenkettebzw. -1, falls nicht vorhanden.

compareTo(s) Vergleicht Zeichenketten String int

in lexikalischer Reihenfolge.

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 8 / 9

Page 20: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Methoden zur Bearbeitung von Zeichenketten

Die folgenden Methoden erfordern allesamt die objektorientierte Schreibweise:

Syntax: Variable.Methode (Argumente);

Methode Beschreibung Argumenttyp Ergebnistypequals(s) Vergleicht Zeichenketten String boolean

inhaltlich miteinander.length() Ermittelt Lange int

der Zeichenkette.charAt(i) Greift ein Zeichen raus. int char

substring(i,j) Greift Teilzeichenkette raus i: int String

(Zeichen i bis j-1) j: intreplace(c1,c2) Ersetzt Zeichen c1 c1: char String

durch Zeichen c2. c2: charindexOf(s) Liefert Index eines Zeichens char, String int

oder einer Teilzeichenkettebzw. -1, falls nicht vorhanden.

compareTo(s) Vergleicht Zeichenketten String int

in lexikalischer Reihenfolge.

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 8 / 9

Page 21: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Methoden zur Bearbeitung von Zeichenketten

Beispiele

String s8 = "Alex";String s9 = "Alex";if (s8.equals(s9)) ... // ergibt trueString s10 = "Achtung";int dim = s10.length(); // ergibt dim=7String s11 = s10.substring(3,5); // ergibt s11="tu"String s12 = "blabla";String s13 = s12.replace(’a’,’u’); // ergibt s13="blublu"int i = s13.indexOf(’b’); // ergibt i=0int j = s13.indexOf("blu"); // ergibt j=0String s14 = "Anita";if (s8.compareTo(s14)<0) ... // ergibt true

Es gibt noch viele weitere Methoden (siehe auch Webseiten der Vorlesungund Java–Dokumentation).

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 9 / 9

Page 22: Zeichenketten - math.kit.edu · Zeichenketten Gerd Bohlender Institut f¨ur Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender

Methoden zur Bearbeitung von Zeichenketten

Beispiele

String s8 = "Alex";String s9 = "Alex";if (s8.equals(s9)) ... // ergibt trueString s10 = "Achtung";int dim = s10.length(); // ergibt dim=7String s11 = s10.substring(3,5); // ergibt s11="tu"String s12 = "blabla";String s13 = s12.replace(’a’,’u’); // ergibt s13="blublu"int i = s13.indexOf(’b’); // ergibt i=0int j = s13.indexOf("blu"); // ergibt j=0String s14 = "Anita";if (s8.compareTo(s14)<0) ... // ergibt true

Es gibt noch viele weitere Methoden (siehe auch Webseiten der Vorlesungund Java–Dokumentation).

G. Bohlender (IANM – UNI Karlsruhe) Zeichenketten 16. Mai 2007 9 / 9