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"));">

Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings (Zeichenketten)"—  Präsentation transkript:

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

2 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 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"));

4 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...

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

6 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);....}

7 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.

8 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);....

9 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

10 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

11 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

12 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 }

13 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...

14 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"); }


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

Ähnliche Präsentationen


Google-Anzeigen