Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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