PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ int Typ String Operatoren auf int (+, -, *, /, %) und String (+) Vergleichoperatoren (==, !=, >, =, <=)
PKJ 2005/2 Stefan Dissmann Ergänzungen Weitere Konstrukte: for-Schleife if-else-Anweisung Weitere Typen: boolean byte, short, long, float, double char Zuweisungsoperatoren Sichtbarkeit von Variablen
PKJ 2005/3 Stefan Dissmann for-Schleife Wiederkehrendes Problem: Durchlaufen eines Feldes zähler = 0; while (zähler < zahlen.length) { System.out.print(zahlen[zähler] + ); zähler = zähler+1; } Einfacher mit for-Schleife: for (zähler=0; zähler<zahlen.length; zähler=zähler+1) { System.out.print(zahlen[zähler] + ); }
PKJ 2005/4 Stefan Dissmann for-Schleife for (zähler=0; zähler<zahlen.length; zähler=zähler+1) { System.out.print(zahlen[zähler] + ); } 3 Bestandteile Initialisierung: Wird genau ein Mal und am Anfang ausgeführt! (auch mit Vereinbarung, auch mehrere Variable) Bedingung (wie bei while-Schleife) Anweisungsteil: Wird immer am Ende eines Schleifendurchlaufs ausgeführt! (auch mit mehreren Anweidungen)
PKJ 2005/5 Stefan Dissmann for-Schleife Also möglich: for (int i=0,j=5; i<j; i=i+1, j=j-1, System.out.println(i+" "+j)); Erzeugt:
PKJ 2005/6 Stefan Dissmann for-Schleife Und seit JAVA 5 auch möglich! Statt for (zähler=0; zähler<zahlen.length; zähler=zähler+1) { System.out.print(zahlen[zähler] + ); } Jetzt for (int element : zahlen) { System.out.print(element + ); }
PKJ 2005/7 Stefan Dissmann if-else-Anweisung Auch möglich: for (int zähler=0; zähler<zahlen.length; zähler=zähler+1) { if (zahlen[zähler] != 0) { System.out.print(Primzahl, ); } else { System.out.print(keine Primzahl, ); } } else bezieht sich immer auf vorangehendes if entweder if- oder else- Zweig wird durchlaufen auf else folgt Anweisung oder Block, also insbesondere auch … else if ( … ) …
PKJ 2005/8 Stefan Dissmann boolean Typ für Wahrheitswerte Schlüsselwort: boolean Wertemenge: true, false Operatoren:! = Negation (NOT) &= Konjunktion (AND) |= Disjunktion (OR) ^= exkl. Disj. (XOR) Shortcut-Operatoren: rechter Operand wird nur ausgewertet, wenn für das Ergebnis benötigt &&= shortcut AND ||= shortcut OR
PKJ 2005/9 Stefan Dissmann Boolean - Beispiele Beispiel 1: boolean abbruch = false; while (!abbruch & i<j) { … abbruch = a < b; } Beispiel 2: while (b!=0 && (a/b==2)) { … } Mögliche Division durch 0 verhindert!
PKJ 2005/10 Stefan Dissmann byte, short, long, float, double Teilmengen der ganzen Zahlen byte Zahlen mit 8 bit short Zahlen mit 16 bit int Zahlen mit 32 bit long Zahlen mit 64 bit Bei Rechnung kann Überlauf auftreten! Teilmengen der reellen Zahlen float Zahlen im Bereich double Zahlen im Bereich Schreibweisen: f -4.67e e-3 Bei Rechnung kann Rundungsfehler auftreten!
PKJ 2005/11 Stefan Dissmann char Menge der Zeichen Schlüsselwort:char Wertemenge:'a' … 'z' 'A' … 'Z', '0' … '9', aber auch '\n' Zeichen sind geordnet (Unicode) daher sind Vergleiche möglich keine anderen Operatoren
PKJ 2005/12 Stefan Dissmann Typumwandlung Umwandlung von Zahlentypen von kleinerem zu größerem Wertebereich implizit: int i = 45; double f = i; von größerem zu kleinerem zu Wertebereich explizit: double f = 45.5; int i = (int)f; Type Cast
PKJ 2005/13 Stefan Dissmann Typumwandlung Umwandlung von Zeichen zu und aus int implizit: int i = ' a ' ; i=97, Unicode-Position von a char c = 97+1; c= ' b ', Zeichen 98 in Unicode char c = 'a'+2; c= ' c ', Zeichen 99 in Unicode zu und aus anderen Typen explizit: char c = (char)99.3;
PKJ 2005/14 Stefan Dissmann Zuweisungsoperatoren Kurzformen für häufige Zuweisungen stattkurz summe = summe + zähler; summe+=zähler; produkt = produkt * zähler; produkt*=zähler; zähler = zähler + 1;zähler++; oder ++zähler; aber: zähler++ und ++zähler liefern unterschiedliche Ergebnisse
PKJ 2005/15 Stefan Dissmann Zuweisungsoperatoren Beispiel: int i=1, j=1; System.out.println(1 + i++); druckt 2 System.out.println(1 + ++j); druckt 3 System.out.println(i+ +j); druckt 2 2 i++ erhöht i um 1 und liefert den Wert von i vor der Erhöhung ++i erhöht i um 1 und liefert den Wert von i nach der Erhöhung
PKJ 2005/16 Stefan Dissmann Sichtbarkeit von Variablen Variablen sind immer sichtbar nach ihrer Vereinbarung In dem Block, in dem sie vereinbart wurden In allen darin geschachtelten Blöcken in der for-Schleife, in der sie vereinbart wurden Variablen können in ihrem Sichtbarkeitsbereich nicht erneut vereinbart werden!