1. Felder und Strings Datentypen für Strings Der Datentyp String Zeichenketten können in Java mit dem Referenzdatentyp String dargestellt werden. Zeichenketten vom Typ String haben die folgenden wesentlichen Eigenschaften: ☞ Die Länge eines Strings steht mit seiner Erzeugung fest und kann nachträglich nicht geändert werden. ☞ Der Inhalt des Strings kann nicht geändert werden. • Ein String ist eigentlich ein Objekt der Klasse java.lang.String. • Für die Erzeugung kann die Literaldarstellung oder der new-Operator verwendet werden. Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08 32 1. Felder und Strings Datentypen für Strings Varianten zur Erzeugung von String-Objekten: String s1 = "abc"; String s2 = new String( "abc" ); char[] data = { ’a’, ’b’, ’c’ }; String s3 = new String( data ); byte[] b = { 97, 98, 99 }; String s4 = new String( b ); String s5 = new String( s4 ); Was liefert s1 == s2 oder s5 == s4? Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08 33 1. Felder und Strings Datentypen für Strings Die Klasse String beinhaltet Methoden zum • Zugriff auf einzelne Zeichen der Zeichenkette, charAt(int index) • Vergleich von Zeichenketten, compareTo(String vergleichsString) und equals(String vergleichsString) • Suchen von Teil-Zeichenketten, indexOf(String teilString) • Herausgreifen von Teil-Zeichenketten und substring(int von) und substring(int von, int bis) • Wandeln von Groß- in Kleinbuchstaben (und umgekehrt). toLowerCase() und toUpperCase() Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08 34 1. Felder und Strings Datentypen für Strings String s1 = "Weihnachten"; String s2 = "Weihnachten"; String s3 = "WEIHNACHTEN"; System.out.println(s1.charAt(4) ); System.out.println(s1.compareTo(s2) ); System.out.println(s1.compareTo(s3) ); System.out.println(s1.equals(s2) ); System.out.println(s1.indexOf("ach")); System.out.println(s1.substring(3)); System.out.println(s1.substring(3,7)); System.out.println(s1.toUpperCase()); Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08 // // // // // // // // Ausgabe: n Ausgabe: 0 Ausgabe: 1 Ausgabe: true Ausgabe: 5 Ausgabe: hnachten Ausgabe: hnac Ausgabe:WEIHNACHTEN 35 1. Felder und Strings Datentypen für Strings Der Datentyp StringBuffer • Die Klasse StringBuffer erlaubt es uns, mit veränderbaren ZeichenkettenObjekten zu arbeiten. • Wir können beispielsweise zusätzliche Zeichen hinzufügen oder entfernen, ohne das jeweils ein neues Objekt erzeugt wird. • Während String str = ""; for (int i=1; i<=500 ; i++ ) str = str + "x"; insgesamt 500 neue String-Objekte erzeugt, wird in den Zeilen StringBuffer buf = new StringBuffer(); for (int i=1; i<=500 ; i++ ) buf.append("x"); nur ein einziges StringBuffer-Objekt erzeugt und verwendet. Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08 36 1. Felder und Strings Datentypen für Strings • Vorteil: effizienter • Nachteil: komplexere Programmierung • Konstruktoren von StringBuffer: public StringBuffer() public StringBuffer(String s) • Einige Methoden: – Aktuelle Länge: length() – Etwas an die aktuelle Zeichenkette anhängen: verschiedene Varianten von append, z.B. StringBuffer append(int i) – Einfügen an einer bestimmten Stelle: verschiedene Varianten von insert, z.B. StringBuffer insert(int offset, int i) – Teilstring löschen: StringBuffer delete(int von, int bis) • Genaueres erfahren Sie in der API-Dokumentation. Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08 37