3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings (Zeichenketten)

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Kapselung , toString , equals , Java API
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
Listen Richard Göbel.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
SWITCH - Anweisung.
Verzweigung oder bedingte Anweisung Weiter mit PP.
IF-ELSE-IF-Ketten Weiter mit PP..
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
DVG Klassenhierarchie. DVG Klassenhierarchie 4 Durch die Ableitung jeder Klasse aus genau einer Elternklasse entsteht eine Baumstruktur.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Klassenhierarchie Klassenhierarchie. DVG Klassenhierarchie 2 Klassenhierarchie Durch die Ableitung jeder Klasse aus genau einer Elternklasse.
Einführung in die Programmierung Datensammlung
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Grundlagen der Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Verarbeitung von Char, Strings und Zeichenketten 2.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014/15 Instanzmethoden
Programmiervorkurs WS 2014 Referenzdatentypen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Tutorium Software-Engineering SS14 Florian Manghofer.
 Präsentation transkript:

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings (Zeichenketten)

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 ZK sind Objekte der Klasse String, d. h. sie besitzen Methoden und Attribute. ZK sind nur lesbar und nicht veränderbar. Veränderungen können nur über die Klasse StringBuffer vorgenommen werden. Die Instanzierung von Zeichenketten erfolgt durch · Zeichenkette · durch + bzw. += auf 2 Objekte der Klasse String · new String() · new String(String value) Zwei grundlegende Methoden der Klasse ZK sind length() und charAt(). length() gibt Anzahl der Zeichen zurück (organisiert als Array) und ermöglicht so den Zugriff auf Elemente zwischen 0 oder und length()-1 (IndexOutOfBoundsException)

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 class StringAnalyse { public static void main(String args[]){ System.out.println("Beispiel StringAnalyse"); Eingabe strein = new Eingabe(); String str = strein.EingabeEinesString("Satz: (>40 Zeichen: "); System.out.println("Der String lautet: " + str); System.out.println("String-Länge:" + str.length()+ "Zeichen."); //Zählung beginnt bei 0 System.out.println("Zeichen an Position 16 ist ein \"" + str.charAt(16) + "\n""); //Meth. startswith() und endswith() gibt Boolean-Wert zurück System.out.println("Der String beginnt mit dem Wort \"Leben\": " + str.startsWith("Leben"));

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Mögliche Bildschirmausschrift: Beispiel StringAnalyse Geben Sie einen Satz ein (>40 Zeichen): Traeume nicht Dein Leben, sondern lebe Deine Traeume! Der String lautet: Traeume nicht Dein Leben, sondern lebe Deine Traeume! Die String-Laenge betraegt 53 Zeichen. Das Zeichen an Position 16 ist ein "i" Der String beginnt mit dem Wort "Leben": false Der String endet mit dem Wort "Träume!": false Der Index des ersten "L" ist 19 Der Index des letzten "L" ist: 34 Der Substring von Position 0 bis 2 ist Tra Der Substring von Position 10 bis 20 ist: cht Dein L Der Substring von Position 40 bis zum Ende ist: eine Traeume! Press RETURN for exit...

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings sind nur lesbar und nicht veränderbar !!!

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 class ChangeString { public static void main(String args[]) throws IOException { String aStr = "Geed "; String bStr = "Merning!"; String cStr = aStr.concat(bStr); System.out.println(cStr); String aStr = aStr.concat(bStr); // das geht nicht System.out.println(aStr.concat(bStr)); // aber das geht String dStr = cStr.replace('e', 'o'); System.out.println(dStr); String eStr = dStr.toLowerCase();// Kleinbuchstaben System.out.println(eStr); String fStr = eStr.toUpperCase(); System.out.println(fStr);....}

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Bildschirmausschrift: Geed Merning! Good Morning! good morning! GOOD MORNING!..... Problem: Bei Zeichenketten in Ausdrücken wird für jedes Zwischenergebnis eine gesonderte String-Instanz benötigt. Lösung: Benutzung eines Objektes der Klasse StringBuffer für ZK in Ausdrücken. StringBuffer Objekte können verändert werden und sind unabhängig von String.

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 class ChangeBuffer { public static void main(String args[]) throws IOException { StringBuffer aBuff = new StringBuffer("Aller ist im Fluss!"); System.out.println("Inhalt von aBuff: " + aBuff); // Methode zur Manipulation der Pufferl ä nge aBuff.setLength(10); System.out.println("aBuff.setLenght(10) ausgef ü hrt:"); System.out.println("Neuer Inhalt von aBuff: " + aBuff); // Methode zur Manipulation des Pufferinhaltes aBuff.setCharAt(4,'s'); System.out.println("aBuff.setCharAt(4,'s') ausgef ü hrt:"); System.out.println("Neuer Inhalt von aBuff: " + aBuff);....

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Ausschrift : Inhalt von aBuff: Aller ist im Fluss! aBuff.setLenght(10) wurde ausgefuehrt: Neuer Inhalt von aBuff: Aller ist Kapazitaet und Laenge: 35Zeichen, 10Zeichen aBuff.setCharAt(4, 's') wurde ausgefuehrt: Neuer Inhalt von aBuff: Alles ist

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Kapazität StringBuffer hat eine Kapazität der Länge der ZK, die noch gespeichert werden kann bevor mehr Platz angefordert wird. Der Puffer wächst zwar automatisch, aber die einmalige Größenangabe ist effizienter. Vergleiche von Strings Die internationalen Aspekte von Zeichen werden bei der Sortierung nicht berücksichtigt. Der Ausgangspunkt für Vergleiche ist der Unicode: bsp: 1. a ç a und 2.acz // ç (\u0E7)und c(\u063)im Alph. gleich, nicht Unicode // Sortierung: 1. acz und 2. a ç a

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 String.equals(String str) liefert true wenn die übergebene Objektreferenz auf ein Objekt mit gleichem Inhalt zeigt (gleiche Länge und gleiche Unicodezeichefolge). String.equalsIgnoreCase(String str) ist ein ZK-Vergleich unabhängig von Groß-/Kleinschreibung int String.compareTo(String str) ergibt ein negatives Ergebnis wenn str kleiner, 0 wenn gleich, und positiv wenn größer. Ist zur Sortierung von ZK geeignet. Beispiel: binärer Suchalgorithmus auf sortiertes Array

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 private String[] feld; public int position (String str) { int lo = 0; int hi = feld.length - 1; while (lo <= hi) { int mid = lo + (hi -lo) / 2; int cmp = str.compareTo(feld[mid]); if (cmp == 0)//gefunden return mid; else if (cmp < 0) // im unteren Bereich suchen hi = mid - 1; else lo = mid + 1; } return -1;// nicht gefunden }

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Zeichenkettenumwandlung Der Typ zu dem gewandelt wird, sollte eine Methode zur Umwandlung besitzen. Typ nach Stringvon String boolean String.valueOf(boolean) new Boolean(String).booleanValue() int String.valueOf(int) Integer.ParseInt(String, int base) float String.valueOf(float) new Float(String).floatValue() etc...

3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 String Übung: Ziel: Zugriff auf die Stringkomponenten und Auswertung Zählen der Häufigkeit eines Buchstabens: public class ZeichenZaehler { public static void main (String args[]) { String str = new String ("Java ist eine Sprache."); long zeichenZaehler[] = new long [256]; // for (int i = 0; i < str.length(); i++) zeichenZaehler[str.charAt(i)] ++; for (int i = 0; i < zeichenZaehler.length; i++) if (zeichenZaehler[i] > 0) System.out.println((char)(i) + "\t[" + i + "]\t- " + zeichenZaehler[i] + " mal"); }