Modellierung und Programmierung 1

Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f¨ ur Informatik Universit¨ at Leipzig 6. Januar 2016...
Author: Rainer Adenauer
6 downloads 2 Views 612KB Size
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f¨ ur Informatik Universit¨ at Leipzig

6. Januar 2016

Strings – Besonderheiten I I

Strings sind Objekte

I

eine Stringreferenz zeigt auf den Wert, das Stringobjekt

I

das Stringobjekt ist unver¨ anderbar (engl. immutable)

I

mehrere Referenzen k¨ onnen auf ein Stringobjekt zeigen

I

einer Stringreferenzen kann ohne Anwendung des new-Operator ein neues Stringobjekt zugewiesen werden String laufvogel = "Moa"; laufvogel = "Emu";

I

Stringobjekte k¨onnen ohne Anwendung des new-Operator kopiert werden String laufvogel = "Emu"; laufvogel = "Moa"; String newZBewohner = laufvogel;

Strings – Besonderheiten II I

undefinierte Stringreferenz: String flugsaurier; → null

I

leeres Stringobjekt: String adler = "";

I

Literal: String papagei = "Kakadu";

I

Variable: String vogel = papagei;

I

new-Operator: String seglervogel = new String("Kolibri"); char[] laufvogel = {’K’, ’i’, ’w’, ’i’}; String newZBewohner = new String(laufvogel);

unver¨anderbare (immutable) Strings

Methoden der String-Klasse ver¨andern niemals den originalen String, sie geben einen neuen String (und damit auch eine neue Referenz) zur¨ uck. Was bedeutet das? I

auf welches Stringobjekt eine Referenz zeigt ist ver¨anderbar

I

das Stringobjekt, auf das eine Referenz zeigt, ist nicht ver¨andert werden

¨ Ubung: MickyMouse.java

Methoden der Klasse String – equals() Strings vergleichen I

I I

Vergleich der Referenzen String string1 = "cat"; String string2 = "cat"; (string1 == string2) → false String string1 = "cat"; String string2 = string1; (string1 == string2) → true This is what you really want! Vergleich der Strings String string1 = "cat"; String string2 = string1; string1.equals(string2); → true

java.lang.String – Methode: equals() boolean

equals ( Object anObject ) Compares this string to the specified object

boolean var = this string . equals ( specified object ); boolean var =

string1 . equals ( string2 );

Methoden der Klasse String t h e

b l a c k

c a t

i s

a t

h o m e

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

String satz = "the black cat is at home"; startsWith()

I I

satz.startsWith("the") → true satz.startsWith("The") → false (uppercase ’T’ !)

endsWith()

I I

satz.endsWith("me") → true satz.endsWith("home ") → false (tailing space!)

Methoden der Klasse String – compareTo() lexikographischer Vergleich von Strings

I

I

compareTo() vergleicht thisString mit anotherString lexikographisch R¨ uckgabetyp: int (Integer) I I I

thisString gleich anotherString → 0 thisString gr¨oßer anotherString → positiv Integer thisString kleiner anotherString → negativ Integer −32

0

Ant 33

ant 1

bee

Methoden der Klasse String t h e

b l a c k

c a t

i s

a t

h o m e

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Finden von Subsequenzen I

I

I

I

length() – returns int gibt die L¨ange von thisString zur¨ uck indexOf(char|String x, int i) – returns int returns the index within thisString of the first occurrence of the specified character or substring x, starting forward search at index i lastIndexOf(char|String x, int i) – returns int returns the index within thisString of the last occurrence of the specified character or substring x, starting backward search at index i return value ’-1’ indicates that there is no occurence of x in the specified substring of thisString

Methoden der Klasse String Durchsuchen des Strings satz nach allen, nicht u ¨berlappenden, Kopien des Substrings “at”. 2

length of the search string

t h e

b l a c k

c a t

i s

a t

h o m e

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 forward search 0

11 + 2 13

17 + 2 19

backward search − 2 +17 − 2 +11 −1

9

¨ Ubung: UntanglingStrings.java

15

−1 23

Methoden der Klasse String t h e

b l a c k

c a t

i s

a t

h o m e

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

“Zerkleinern” von Strings I

substring() – returns String substring(beginIndex, endIndex) returns a new string that is a substring of thisString beginIndex: index of first character to be returned endIndex: index one beyond last character to be returned warum “one beyond last”? aus Bequemlichkeit: beginIndex + L¨ange des gesuchten Substrings Beispiel: String cat = satz.substring(10,13);

Methoden der Klasse String t h e

b l a c k

c a t

i s

a t

h o m e

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

“Zerkleinern” von Strings I

toCharArray() – returns char[] converts thisString to a new character array Beispiel:char[] satzInChar = satz.toCharArray();

I

split() (Tokenizer) – returns String[] hier eine spezialisierte Form der Anwendung: String[] words = split(" ",0); wobei " " – ’blank’ Symbol wobei 0 – Limit f¨ ur die Anzahl an Tokens

Methoden der Klasse String I

String als R¨ uckgabetyp I I I I

I

boolean als R¨ uckgabetyp I I I

I

equals() startsWith() endsWith()

int als R¨ uckgabetyp I I I I

I

substring() replace() split() trim()

compareTo() length() indexOf() lastIndexOf()

char als R¨ uckgabetyp I I

charAt() toCharArray()

Methoden der Klasse Character

eine winzige Auswahl: I

boolean als R¨ uckgabetyp I I I

I

isWhitespace() isLetter() isDigit()

char als R¨ uckgabetyp I

parseChar()

¨ Ubung: UntangingStrings.java

Ver¨anderbare (mutable) Strings

Was es denn nicht alles gibt! Zwei M¨oglichkeiten: I

StringBuilder I I

I

nicht thread safe, nicht f¨ ur Multithreading geeignet besseres Laufzeitverhalten als StringBuffer

StringBuffer I I

thread safe, f¨ ur Multithreading geeignet schlechteres Laufzeitverhalten als StringBuilder

StringBuilder und StringBuffer stellen die selben Methoden zur Verf¨ ugung.

Zwei wichtige Konzepte der Programmierung Thread (w¨ortlich: Faden, Strang): ein Ausf¨ uhrungsstrang ist eine Sequenz von Anweisungen in einem Program, die unabh¨angig von anderen Programmteilen ausgef¨ uhrt werden kann. Multithreading in Systemen mit mehreren Prozessoren erm¨oglicht, dass mehrere Threads parallel laufen k¨onnen → Paralellverarbeitung. Buffer (Puffer) sind Speicher f¨ ur die Zwischenlagerung von Daten. Puffer dienen dem Ausgleich von Unterschieden in der Verarbeitungsgeschwindigkeit der Daten von aufeinanderfolgenden Prozessen. Beispiel: Youtube: Laden eines Videos – Puffer – Abspielen des Videos

Klasse StringBuilder I

StringBuilder Objekte verhalten sich wie Objekte

I

Deklaration und Definition: StringBuilder builtString = new StringBuilder();

I

Initialisierung: StringBuilder(String str)

I

ein Objekt belegt (alloziert) einen Bereich im Speicher, den Puffer

I

Kapazit¨ at (capacity): Gr¨ oße dieses Bereichs

I

default: Kapazit¨at = L¨ange des Strings plus 16

I

w¨ achst dynamisch wenn erforderlich

I

L¨ange des Strings L¨ange de Strings

Command Line Parameter/Arguments Elektronische Daten Verarbeitung (EDV) funktioniert nach dem EVA-Prinzip: Eingabe (input), Verarbeitung (processing) und Ausgabe (output) I

Daten sind das “Was” der Datenverarbeitung und stellen die Angaben, (Zahlen-)werte u.a. die durch Messung, Beobachtung u.a. gewonnen wurden dar

I

sie werden u uhrt gestellt ¨blicherweise dem Programm zur verf¨ z.B. per Konsoleneingabe (Tastatur), Datenstr¨ ome (von Programm zu Programm) oder Datendateien (Festplatte)

I

Parameter sind programminterne “Weichen”

I

Argumente sind programmexterne “Weichensteller”, die das “Wie” der Verarbeitung der Daten durch das Programm steuern Parameter k¨ onnen voreingestellt sein, bzw. k¨ onnen oder m¨ ussen beim Programmaufruf spezifiziert werden z.B. per Kommandozeilenargumente oder Konfigurationsdateien

Hinweis: in der Informatik werden die Begriffe “Daten” und “Information” oft gleichbedeutend verwendet

Kommandozeilenargumente (command line arguments) ¨ Ubergabe von Argumenten an ein Programm I

sowohl Daten (“Was”), z.B. in Form von Dateien, als auch Parameter (“Wie”) der Datenverarbeitung k¨ onne mittels Kommandozeilenargumenten zur Verf¨ ugung gestellt werden

Konsolenaufrufe

Programmausgaben

Beispiel: AutoGreetings.java

Kommandozeilenargumente Die Kommandozeile: I

Beim Programmaufruf k¨ onnen Argumente spezifiziert werden

I

Programmaufruf Argument 1 Argument 2 ... Argument n

I

jedes Argument hat eine Bedeutung z.B. Startwert f¨ ur Berechnung, Name der Datendatei, Symbol zur Steuerung eines bestimmten Programmablaufs

Im Programm: I

Argumente als Strings in Array args

I

das Programm muss diesen Strings wieder eine Bedeutung geben

I

Parsen der Kommandozeilenargumente

Author: Monika Meiler

Konvertieren von Strings zu Prim¨aren Datentypen Wrapper-Klassen I

prim¨are Datentypen sind keine Objekte

I

trotzdem wie Objekte behandeln

I

“einh¨ ullen” (to wrap) in ein Objekt

I

durch Wrapper-Klassen

I

sie stellen u.a. Stringparser zur Verf¨ ugung

I

z.B. int schnapsZahl = Integer.parseInt("66");

Fehler (Error) vom Typ NumberFormatException

Dateinamen zum Leben erwecken – File-Klasse Dateien lesen