String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Ähnliche Dokumente
Der Datentyp String. Stringvariable und -vergleiche

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9

Zeichenketten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java. 16.

Zeichen. Datentyp char. char ch = 'x'; Page 1. Zeichen braucht man zur Verarbeitung von Texten, Namen, Bezeichnungen. Zeichencodes

Globale Variablen. Lokale und globale Variablen. Einsatz globaler Variablen. Lokale Variablen. Gewünscht war wohl eher:

Einstieg in die Informatik mit Java

Abschnitt 11: Beispiel: Die Klasse String (Teil 1)

Einstieg in die Informatik mit Java

Abschnitt 7: Beispiel: Die Klasse String (Teil 1)

Informatik I WS 07/08 Tutorium 24

Tutorium 2. Strings. Skript zur Vorlesung Einführung in die Programmierung

Einführung in die Programmierung

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Objektorientierte Programmierung. Kapitel 18: Strings

Objektorientierte Programmierung. Kapitel 18: Strings

Objektorientierte Programmierung. Kapitel 10: Strings

Objektorientierte Programmierung. Kapitel 17: Strings

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Strings in Java. Die String Klasse und Methoden. A. Müller

Kapitel 3: Variablen

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Datentypen & Zeichenketten

Tag 2 Repetitorium Informatik (Java)

Informatik Vorkurs - Vorlesung 2

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Basiswissen in Informatik

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Anregungen zu Übung 2

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Java Datentypen und Variablen

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Algorithmen und Programmierung II

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Programmierpraktikum

Tag 4 Repetitorium Informatik (Java)

Diana Lange. Generative Gestaltung Komplexe Datentypen: String

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Informatik II. Woche 10, Giuseppe Accaputo

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

2.8 Klassen. Nichtgleichartige Elemente können in Klassen zu einem neuen Typ zusammengefasst werden. Beispiel: Die drei Komponenten

Tag 8 Repetitorium Informatik (Java)

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Vorkurs Informatik WiSe 16/17

String vs. StringBuffer. Class String

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Zeiger, Arrays und Strings in C und C++

Kapitel 06. Klassen und Objekte. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Objektorientierte Programmierung OOP Programmieren mit Java

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

Probeklausur Name: (c)

Einführung in die Programmierung für NF MI. Übung 04

Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient.

Institut für Informatik

Objektorientierte Programmierung. Kapitel 19: Wrapper-Klassen

Elementare Konzepte von

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Einstieg in die Informatik mit Java

Die Klasse string Verfasser: Christian Bartl

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Klassen als Datenstrukturen

Java Referenzdatentypen genauer betrachtet

Informatik II Prüfungsvorbereitungskurs

Probeklausur Informatik 2 Sommersemester 2013

Einstieg in die Informatik mit Java

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Computeranwendung und Programmierung (CuP)

Welche Informatik-Kenntnisse bringen Sie mit?

Praxis der Programmierung

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben

Einführung in C. EDV1-04C-Einführung 1

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II a[0] a[1] a[2] a[3] a[n 1]

Methoden und Wrapperklassen

Informatik II. Woche 15, Giuseppe Accaputo

C++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Hüllklassen. Gerd Bohlender. 25. Juni Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Vorkurs Informatik WiSe 17/18

Einstieg in die Informatik mit Java

Einführung in die Programmierung für NF. Arrays

Repetitorium Informatik (Java)

Einstieg in die Informatik mit Java

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Programmiervorkurs Einführung in Java Tag 1

Transkript:

Informatik mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da aber diese Datenstruktur so häufig vorkommt, stellt Java einen Bibliothekstyp String zur Verfügung. Dieser Typ ist sogar in die Sprache Java integriert, weil der Compiler speziellen Code für Strings erzeugt. Stringvariable und -vergleiche Stringvariable werden mit dem Typ String deklariert: String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata: s2 = "Hallo"; Die Zuweisung kann auch direkt bei der Deklaration erfolgen. Achtung: x ist eine Zeichenkonstante, "x" eine Stringkonstante. Da Strings wie Arrays Objekte sind, müssten sie eigentlich mit new erzeugt werden: String s1 = new String("Hallo"); Dies kann man auch machen, man muss es aber nicht. Java erlaubt bei Stringobjekten die einfachere Syntax. Vergleicht man die oben angegebenen Strings auf folgende Art if (s1==s2) {System.out.print ("Strings sind gleich.");} else {System.out.print ("Strings sind nicht gleich.");} erhält man Strings sind nicht gleich. Warum? Strings sind Objekte und die Stringvariablen enthalten dementsprechend nur Zeiger auf die Stringobjekte. Da s1 und s2 verschiedene Speicheradressen enthalten, wird keine Gleichheit festgestellt. Schreibt man stattdessen s2 = s1; so zeigen s1 und s2 auf das selbe Stringobjekt, sie enthalten also beide die gleiche Speicheradresse. Dann ergibt s1==s2 den Wert true. Zum richtigen Vergleich zweier Stringobjekte wird die Methode equals benutzt: s2 = "Hallo"; if (s1.equals(s2)) {System.out.print ("Strings sind gleich.");} else {System.out.print ("Strings sind nicht gleich.");} 1

Stringobjekte sind in der Größe unveränderlich. Trotzdem kann man s1 = s1 + " Welt"; System.out.print(s1); schreiben. Bei diesem Anhängen wird automatisch ein neues Stringobjekt mit dem neuen Inhalt und der neuen Größe erzeugt und s1 zeigt auf das neue Objekt. Das alte "Hallo" steht jetzt ohne Zeiger im Speicher herum und wird bei Gelegenheit vom Garbage Collector entsorgt. In Strings können die schon bei den Zeichen angegebenen Konstanten benutzt werden: s1 = "Der String \"Hallo\" steht in Anf\u00fchrungszeichen."; Weitere Stringoperationen Auf die einzelnen Zeichen eines Strings kann nicht wie bei Arrays direkt über einen Index zugegriffen werden. Dazu benötigt man die Methoden der String-Bibliothek. Für die folgenden Beschreibungen sei angenommen, dass die folgenden Variablen deklariert seien: String s = "a long string"; String s2; char ch; int i; Die Operation i = s.length(); liefert die Anzahl der Zeichen im String s. Achtung: Bei Arrays schreibt man z.b. a.length ohne Klammern. Bei Strings geschieht der Zugriff aber über eine Methode length, also muss man Klammern setzen. ch = s.charat(3); liefert das Zeichen mit dem Index 3 aus dem String s, also hier ein o. Die Indizierung beginnt wie bei Arrays mit 0. i = s.indexof("ng") + s.indexof( o ); liefert u.a. die Position des ersten Vorkommens von ng in s oder -1, falls ng nicht gefunden wurde. Hier erhält man also 4 + 3. Man sieht, dass man auch eine char-konstante als Parameter übergeben kann. i = s.indexof("ng",5); liefert die Position des ersten Vorkommens von ng in s, beginnt die Suche aber erst ab Position 5. Im Beispiel wird also 11 zurück geliefert. 2

i = s.lastindexof("ng"); liefert die Position des letzten Vorkommens von ng in s. s2 = s.substring(2); liefert den Teilstring von s ab der Position 2, hier long string. s2 = s.substring(2,6); liefert den Teilstring von s ab der Position 2 und bis ausschließlich 6, hier long. if (s.startswith("abc"))... liefert true, wenn s mit abc beginnt. if (s.endswith("abc")) liefert true, wenn s mit abc endet. int k = s.compareto(s2); liefert für k einen Wert kleiner Null, wenn der String s lexikalisch kleiner ist als s2. Null, wenn die Strings gleich sind. größer Null, wenn der String s lexikalisch größer ist als s2. Groß- und Kleinschreibung werden dabei unterschieden. s2 = s.tolowercase(); liefert einen neuen String, in dem alle Großbuchstaben in s durch Kleinbuchstaben ersetzt sind. s2 = s.touppercase(); liefert einen neuen String, in dem alle Kleinbuchstaben in s durch Großbuchstaben ersetzt sind. s2 = s.replace(char oldchar, char newchar); liefert einen neuen String, in dem alle Vorkommen von oldchar durch newchar ersetzt sind. Aufbauen von Strings Da String-Objekte konstante Länge haben, eignen sie sich nicht zum schrittweisen Aufbau einer Zeichenkette. Daher wird ein String entweder in seiner endgültigen Form direkt erzeugt oder in einem char-array oder einem StringBuffer-Objekt aufgebaut und anschließend in ein String-Objekt umgewandelt. 3

Direkter Aufbau String s = "einfach hinschreiben!"; Aufbau aus einem char-array char[] a = new char[80]; for (int i=0; i<80; i++) a[i] = In.read(); String s = new String(a); Aufbau aus einem StringBuffer Der in der Java-Bibliothek enthaltene Typ StringBuffer verhält sich in vielen Dingen wie ein String, lässt aber Veränderungen zu. StringBuffer b = new StringBuffer(); erzeugt ein leeres StringBuffer-Objekt. b zeigt auf dieses leere Objekt. b.append(x); hängt x an b an. x kann vom Typ char, int, long, float, double, boolean, String und char[] sein. i = b.length(); liefert die Anzahl der Zeichen in b. b.insert(pos, x); fügt x an der Stelle pos in b ein. Für die Typen von x gilt das Gleiche wie bei append. b.delete(from, to); löscht in b die Zeichen von Position from (inklusive) bis Position to (exklusive). b.replace(from, to, "abc"); ersetzt in b die Zeichen von Position from (inklusive) bis Position to (exklusive) durch abc. s = b.substring(from, to); liefert den Teil von b von Position from (inklusive) bis Position to (exklusive) als String. ch = b.charat(i); liefert das Zeichen mit Index i aus b. b.setchar(i, x ); ersetzt das Zeichen mit Index i aus b durch x. s = b.tostring(); liefert den Inhalt von b als String. 4

Stringkonversionen Für die Umwandlung von Zahlen in Strings und umgekehrt stellt die Java-Bibliothek geeignete Methoden bereit. int i = Integer.parseInt("123"); erzeugt aus dem String 123 die int-variable 123. float f = Float.parseFloat("3.14"); erzeugt aus dem String 3.14 die float-variable 3,14. String s = String.valueOf(x); erzeugt aus dem Wert von x einen String. x kann vom Typ boolean, char, int, long, float oder double sein. Für die Ausgabe von Werten ist aber meist der +-Operator bequemer: System.out.println("Der Wert von x ist " + x + "."); Für die Umwandlung eines Strings in ein char-array gibt es auch eine Methode: char[] a = s.tochararray(); 5