Der Datentyp String. Stringvariable und -vergleiche

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

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.

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

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

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

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

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

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

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

Objektorientierte Programmierung. Kapitel 18: Strings

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

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

1. Referenzdatentypen: Felder und Strings

Objektorientierte Programmierung. Kapitel 17: Strings

Informatik Vorkurs - Vorlesung 2

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

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

Kapitel 3: Variablen

Anregungen zu Übung 2

Tag 2 Repetitorium Informatik (Java)

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Basiswissen in Informatik

Tag 4 Repetitorium Informatik (Java)

Informatik II. Woche 10, Giuseppe Accaputo

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

Zeiger, Arrays und Strings in C und C++

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

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

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

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Programmierpraktikum

Java Referenzdatentypen genauer betrachtet

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

Tag 8 Repetitorium Informatik (Java)

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

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

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

Informatik II Prüfungsvorbereitungskurs

Probeklausur Name: (c)

Vorkurs Informatik WiSe 16/17

Institut für Informatik

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

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

Algorithmen und Programmierung II

Vorkurs Informatik WiSe 16/17

13. Erweiterte Konzepte Grundlagen der Programmierung 1 (Java)

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

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Programmierkurs C++ Variablen und Datentypen

Tag 4 Repetitorium Informatik (Java)

AuD-Tafelübung T-B5b

Probeklausur Informatik 2 Sommersemester 2013

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

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

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

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

Arrays. Einleitung. Deklarieren einer Array Variablen

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

1 Klassen und Objekte

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

Einstieg in die Informatik mit Java

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Einführung Java Programmieren in Java Arrays Schleifen Fehler. Einführung in Java. Arne Hüffmeier. Michelle Liebers, Dennis Hoffmann

Methoden und Wrapperklassen

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

2.5 Primitive Datentypen

Elementare Konzepte von

Objektorientierte Programmierung OOP Programmieren mit Java

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

Transkript:

Informatik 12 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) {Out.print ("Strings sind gleich.");} else {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: 1

s2 = "Hallo"; if (s1.equals(s2)) {Out.print ("Strings sind gleich.");} else {Out.print ("Strings sind nicht gleich.");} Stringobjekte sind in der Größe unveränderlich. Trotzdem kann man s1 = s1 + " Welt"; 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; boolean jaodernein; 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.compareto("also a long string"); 2

liefert -1, weil s vor dem angegebenen String in der lexikographischen Ordnung liegt. Der Wert 0 ergibt sich bei Gleichheit und der Wert +1, wenn der angegebene String hinter dem String s steht. i = s.comparetoignorecase("also a long string"); liefert das gleiche Ergebnis wie vorher, weil Groß- und Kleinschreibung nicht beachtet werden. jaodernein = s.equalsignorecase("also a long string"); liefert das entsprechende Ergebnis beim Vergleich ohne Beachtung von Groß- und Kleinschreibung. i = s.indexof("ng") + s.indexof( a ); liefert die Position des ersten Vorkommens von ng in s oder -1, falls ng nicht gefunden wurde. Hier erhält man also 4 + 1. 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. 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. s2 = s.trim(); liefert den s ohne führende oder abschließende Leerzeichen. s2 = s.tolowercase(); liefert den s, wobei alle Groß- in Kleinbuchstaben umgewandelt werden. s2 = s.touppercase(); liefert den s, wobei alle Klein- in Großbuchstaben umgewandelt werden. jaodernein = s.startswith("abc") liefert true, wenn s mit abc beginnt. jaodernein = s.endswith("abc") liefert true, wenn s mit abc endet. 3

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. 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äßt 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. 4

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. Stringkonversionen Für die Umwandlung von Zahlen in Strings und umgekehrt stellt die Java-Bibliothek geeignete Methoden bereit. int i = Integer.parseInt("123"); 123 die int-variable 123. long l = Long.parseLong("1234567890123"); 1234567890123 die long-variable 1234567890123. float f = Float.parseFloat("3.14"); 3.14 die float-variable 3.14. double d = Double.parseDouble("1.6e-19"); 1.6e-19 die float-variable 1.6E-19. String s = String.valueOf(x); erzeugt aus dem Wert von x (Typ int, long, float, double, boolean oder char[]) einen String. Für die Ausgabe von Werten ist aber meist der +-Operator bequemer: 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