1 / 40

YOU ARE HERE

2. Java-Einf

nerita
Download Presentation

YOU ARE HERE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. 1 Java-Einführungskurs YOU ARE HERE ? Organisation Einführung Objektorientierte Modellierung Java-Sprachkonstrukte Pakete und Zugriffskontrolle Deklaration von Attributen, Methoden, Variablen Ausdrücke und Anweisungen Kontrollstrukturen Ausnahmebehandlung Java-Klassenbibliothek Datenstrukturen Netzwerk-Programmierung Grafische Benutzungsoberflächen

    2. 2 Java-Einführungskurs Ausdrücke und Anweisungen Ausdrücke sind mehrere durch Operatoren verknüpfte Variablen, Methoden oder Literale jeder Ausdruck hat ein Ergebnis (Wert) bestimmten Typs 5 * a + Math.max (b, c) (primitiver Typ) new java.util.Date () (Referenztyp) in Anweisungen wird der Ausdruckswert einer Variablen zugewiesen, einer Methode übergeben oder als Methodenwert zurückgegeben d = 5 * a + Math.max (b, c); System.out.println (5 * a + Math.max (b, c)); return new java.util.Date (); auch Deklarationen und Initialisierungen sind Anweisungen

    3. 3 Java-Einführungskurs Anweisungen und Blöcke Anweisungen werden mit Semikolon (;) abgeschlossen leere Anweisung: einzelnes Semikolon Anweisung; ; // leere Anweisung Anweisung; Anweisungen werden der Reihe nach abgearbeitet Blöcke (begrenzt durch geschweifte Klammern) fassen Sequenzen von Anweisungen zusammen Anweisung; { Anweisung; Anweisung; Anweisung; } Anweisung;

    4. 4 Java-Einführungskurs Operatoren Konkatenations-Operator + arithmetische Operatoren +, -, *, /, %, ++, -- Type Casting-Operator (typ) Bit-Operatoren ~, &, |, ^, <<, >>, >>> Zuweisungsoperatoren =, +=, -=, *=, /=, %=, &=, |=, ^= logische Operatoren !, &&, &, ||, |, ^ Vergleichsoperatoren ==, !=, >, <, >=, <=, instanceof Bedingungsoperator ?:

    5. 5 Java-Einführungskurs Operatorprioritäten 14 Stufen (hoch bis niedrig) ++, --, Vorzeichen, ~, !, (typ) *, /, % +, - <<, >>, >>> <, <=, >, >=, instanceof ==, != & ^ | && || ?: = *=, /=, %=, -=, <<=, >>=, >>>=, &=, ^=, |= Prioritäten können durch Klammerung geändert werden

    6. 6 Java-Einführungskurs String-Konkatenation Operanden: Strings und ggf. primitive Datentypen Ergebnis: String Verknüpfung (Konkatenation) mit Operator + String a = "Hello", b = "World", c; c = a + " " + b; ist einer der Operanden ein primitiver Datentyp, so wird er in einen String umgewandelt String a = "Antwort: ", c; int b = 42; c = a + b; // "Antwort: 42"

    7. 7 Java-Einführungskurs Arithmetische Operatoren Operanden und Ergebnis: Zahlen Vorzeichen: +a bzw. a -a Rechenoperationen Addition, Subtraktion: a + b a - b Multiplikation, Division: a * b a / b Modulo-Division (Restbildung): a % b Inkrementierung, Dekrementierung (nur für Ganzzahlen) Präinkrement, Prädekrement: ++a --a Postinkrement, Postdekrement: a++ a-- Präfix-Operatoren: erst Rechenoperation, dann Auswertung b = ++a; ? a = a + 1; b = a; Postfix-Operatoren: erst Auswertung, dann Rechenoperation b = a--; ? b = a; a = a - 1;

    8. 8 Java-Einführungskurs implizite Typumwandlung automatische Typanpassung (Type Casting) bei Rechenoperationen mit... ...byte-, short-, int-Zahlen: Ergebnis: int-Zahl ...long- und anderen Ganzzahlen: Ergebnis: long-Zahl ...float- und anderen Zahlen: Ergebnis: float-Zahl ...double- und anderen Zahlen: Ergebnis: double-Zahl Ziel: Vermeidung von Überläufen short a = 2, b = 30000; int c = a * b; // 60000 wäre zu groß für short Vorsicht bei Division von Ganzzahlen short a = 7, b = 2; int c = a / b; // ergibt 3!

    9. 9 Java-Einführungskurs explizite Typumwandlung Type Casting-Operator: (typ) variable Vorsicht: Operator hat sehr hohe Priorität! ggf. Klammerung von zu castenden Ausdrücken notwendig short a = 2, b = 100, c; short a = 7, b = 2; c = (short) (a * b); float c = (float) a / b; Vorsicht: Datenverlust möglich! große in kleine Ganzzahlen: Verlust der höherwertigen Bits Fließkommazahlen in Ganzzahlen: Verlust der Nachkommastellen double d = -67.89; int i = (int) d; // -67 long-Zahlen in Fließkommazahlen: u.U. nicht exakt möglich auch explizites Casting von Referenztypen möglich String-Umwandlungen über besondere Methoden (später)

    10. 10 Java-Einführungskurs Bit-Operatoren Operanden und Ergebnis: ganzzahlige primitive Datentypen bitweise Invertierung: ~a bitweise Verknüpfung bitweises Und: a & b bitweises Oder: a | b bitweises Exclusiv-Oder: a ^ b bitweise Verschiebung (um n Stellen) nach links (mit Nachschieben von Nullen): a << n nach rechts (mit Nachschieben von Nullen): a >> n nach rechts (mit Nachschieben des Vorzeichenbits): a >>> n Trick zur Geschwindigkeitsoptimierung a << n entspricht a * 2n a >>> n entspricht a / 2n

    11. 11 Java-Einführungskurs Zuweisungsoperatoren für alle Datentypen als Ausdruck und Ergebnis: Zuweisungsoperator a = b Variable auf linker Seite erhält Wert des Ausdrucks auf rechter Seite für Zahlentypen als Operanden und als Ergebnis: Kombination von Rechen/Bitverknüpfungs-Operation mit Zuweisung Semantik (mit Operator-Platzhalter #) a #= b ? a = a # (b) Addition, Subtraktion: a += b a -= b Multiplikation, Division: a *= b a /= b Modulo-Division (Restbildung): a %= b Und: a &= b Oder: a |= b Exclusiv-Oder: a ^= b

    12. 12 Java-Einführungskurs Logische Operatoren Operanden: boolesche Ausdrücke Ergebnis: boolescher Wert logische Negation: !a mit Kurzschluss-Auswertung Auswertung der Operanden bricht ab, wenn Ergebnis feststeht logisches Und: a && b logisches Oder: a || b ohne Kurzschluss-Auswertung Auswertung aller Operanden, auch wenn ohne Einfluss auf Ergebnis logisches Und: a & b logisches Oder: a | b logisches Exclusiv-Oder: a ^ b

    13. 13 Java-Einführungskurs Vergleichsoperatoren Ergebnis immer boolescher Wert für alle Datentypen als Operanden: Gleichheit a == b Ungleichheit a != b Vorsicht: Vergleich == nicht mit Zuweisung = verwechseln! für primitive Datentypen als Operanden: "größer als", "größer als oder gleich" a > b a >= b "kleiner als", "kleiner als oder gleich" a < b a <= b für Referenztypen und Klassen als Operanden: Prüfung des Datentyps a instanceof Typ ergibt true, wenn das Objekt a eine Instanz der Klasse Typ ist ergibt auch true, wenn Typ eine Oberklasse der Klasse von a ist

    14. 14 Java-Einführungskurs Referenzgleichheit vs. Wertgleichheit Vorsicht beim Vergleich von Referenztypen! == prüft, ob Referenzen auf gleiche Instanz zeigen != prüft, ob Referenzen auf verschiedene Instanzen zeigen es findet kein Vergleich der Objektinhalte statt! Konsequenzen Vergleich von Objektinhalten nur mit geeignet überschriebener equals-Methode der Objekte möglich Vergleich von Zeichenketten nur mit entsprechenden Methoden der Klasse String möglich

    15. 15 Java-Einführungskurs Bedingte Ausdrücke Beschreibung von Alternativen in Ausdrücken "if-then-else in einem Ausdruck" Syntax a = Bedingung ? WennWahr : WennFalsch Bedingung muss ein Ausdruck mit booleschem Wert sein WennWahr und WennFalsch müssen Ausdrücke mit gleichem Ergebnistyp wie a sein (alle Datentypen erlaubt) Semantik Wenn Bedingung wahr ist, bekommt a den Wert von WennWahr, sonst den von WennFalsch zugewiesen Beispiel Erwachsene zahlen einen Mitgliedsbeitrag von € 10, Jugendliche € 5 mitgliedsBeitrag = alter >= 18 ? 10 : 5;

    16. 16 Java-Einführungskurs Zusammenfassung Ausdrücke Anweisungen und Blöcke Operatoren Konkatenations-Operator + arithmetische Operatoren +, -, *, /, %, ++, -- Type Casting-Operator (typ) Bit-Operatoren ~, &, |, ^, <<, >>, >>> Zuweisungsoperatoren =, +=, -=, *=, /=, %=, &=, |=, ^= logische Operatoren !, &&, &, ||, |, ^ Vergleichsoperatoren ==, !=, >, <, >=, <=, instanceof Bedingungsoperator ?: implizite und explizite Typumwandlung Referenzgleichheit vs. Wertgleichheit

    17. 17 Java-Einführungskurs YOU ARE HERE ? Organisation Einführung Objektorientierte Modellierung Java-Sprachkonstrukte Pakete und Zugriffskontrolle Deklaration von Attributen, Methoden, Variablen Ausdrücke und Anweisungen Kontrollstrukturen Ausnahmebehandlung Java-Klassenbibliothek Datenstrukturen Netzwerk-Programmierung Grafische Benutzungsoberflächen

    18. 18 Java-Einführungskurs Kontrollstrukturen Anweisungen werden normalerweise nacheinander abgearbeitet Bearbeitungsreihenfolge von Anweisungen und Blöcken kann durch Kontrollstrukturen beeinflusst werden bedingte Verzweigungen (if-else) bewachte Anweisungen (switch) Schleifen (for, while, do-while)

    19. 19 Java-Einführungskurs Bedingte Verzweigung Auswahl aus zwei Alternativen und davon abhängige Programmfortsetzung if (Bedingung) Anweisung1; else Anweisung2; Bedingung muss ein Ausdruck mit booleschem Wert sein Anweisung1 wird ausgeführt, wenn Bedingung true ist Anweisung2 wird ausgeführt, wenn Bedingung false ist else-Teil ist optional wenn Bedingung false ist, wird die if-Anweisung verlassen

    20. 20 Java-Einführungskurs if-Anweisung: Beispiel mehrere Anweisungen lassen sich in Blöcken gruppieren if (laenderCode == 'D') { // Versand innerhalb Deutschlands summe += VERSANDKOSTEN_INLAND; System.out.println ("Bestellsumme: EUR " + summe); } else { // Versand ins Ausland summe += VERSANDKOSTEN_AUSLAND; System.out.println ("Order Total: EUR " + summe); } Unterschied zu ?:-Operator mehrere Anweisungen im if- und else-Zweig möglich if- und else-Zweig sind hier keine Ausdrücke gleichen Werts, sondern Anweisungen bzw. Blöcke mehrerer Anweisungen

    21. 21 Java-Einführungskurs Verschachtelte if-Anweisungen Bedingte Verzweigungen sind selbst auch Anweisungen lassen sich als Anweisungen in if- oder else-Zweig einschachteln if (laenderCode == 'D') if (expressVersand == true) summe += VERSANDKOSTEN_INLAND_EXPRESS; else summe += VERSANDKOSTEN_INLAND; else if (expressVersand == true) summe += VERSANDKOSTEN_AUSLAND_EXPRESS; else summe += VERSANDKOSTEN_AUSLAND; else bezieht sich immer auf das nächstliegende vorhergehende if, zu dem noch kein else definiert wurde

    22. 22 Java-Einführungskurs Verschachtelte if-Anweisungen Vorsicht: Weglassen von else-Zweigen kann bei Verschachtelung Missverständnisse auslösen! if (laenderCode == 'D') if (expressVersand == true) summe += VERSANDKOSTEN_INLAND_EXPRESS; else if (expressVersand == true) summe += VERSANDKOSTEN_AUSLAND_EXPRESS; else summe += VERSANDKOSTEN_AUSLAND; Wo liegt der semantische Fehler im Beispiel?

    23. 23 Java-Einführungskurs Verschachtelte if-Anweisungen Compiler richtet sich nicht nach der Einrückung, sondern nach der Reihenfolge der if/else-Zweige: if (laenderCode == 'D') if (expressVersand == true) summe += VERSANDKOSTEN_INLAND_EXPRESS; else if (expressVersand == true) summe += VERSANDKOSTEN_AUSLAND_EXPRESS; else summe += VERSANDKOSTEN_AUSLAND; Vorsicht: Code an sich fehlerfrei (syntaktisch korrekt), verhält sich aber nicht wie beabsichtigt (semantisch falsch) semantische Fehler können vom Compiler nicht erkannt werden!

    24. 24 Java-Einführungskurs Verschachtelte if-Anweisungen Vermeidung des Fehlers durch Einklammerung in Blöcke ({ }) oder Verwendung von leeren Anweisungen (;): if (laenderCode == 'D') { if (expressVersand == true) summe += VERSANDKOSTEN_INLAND_EXPRESS; else; } else if (expressVersand == true) summe += VERSANDKOSTEN_AUSLAND_EXPRESS; else summe += VERSANDKOSTEN_AUSLAND;

    25. 25 Java-Einführungskurs Bewachte Anweisungen: Motivation Beispiel: Währungsumrechnung im Online-Shop wenn Warenversand nach Island: Summe in ISK ausgeben wenn Warenversand nach Hong Kong: Summe in HK$ ausgeben wenn Warenversand nach Japan: Summe in Yen ausgeben ansonsten: Summe in Euro ausgeben mögliche Realisierung (naiv): verschachtelte if-Anweisungen

    26. 26 Java-Einführungskurs Bewachte Anweisungen: Motivation if (laenderCode == 'I') { summe *= 838.536390; waehrung = "ISK"; } else if (laenderCode == 'H') { summe *= 8.300476; waehrung = "HK$"; } else if (laenderCode == 'J') { summe *= 128.501118; waehrung = "YEN"; } else waehrung = "EUR"; System.out.println ("Summe: " + waehrung + summe); unübersichtlich und fehleranfällig!

    27. 27 Java-Einführungskurs switch-Anweisung übersichtlichere und mächtigere Lösung Ausdruck wird ausgewertet und Wert mit Konstanten verglichen Anweisungen ab case-Marke mit "passender" Konstante werden ausgeführt wenn keine Konstante "passt", werden Anweisungen ab default-Marke ausgeführt bei break fährt Programm nach der switch-Anweisung fort

    28. 28 Java-Einführungskurs switch-Anweisung: Beispiel switch (laenderCode) { case 'I': // Island summe *= 838.536390; waehrung = "ISK"; break; case 'H': // Hong Kong summe *= 8.300476; waehrung = "HK$"; break; case 'J': // Japan summe *= 128.501118; waehrung = "YEN"; break; default: // andere Laender waehrung = "EUR"; } System.out.println ("Summe: " + waehrung + summe);

    29. 29 Java-Einführungskurs switch-Anweisung: Regeln Ausdruck muss vom Typ short, byte, int oder char sein Konstanten müssen vom gleichen Typ wie Ausdruck sein default-Zweig ist optional default- und case-Zweige dürfen leer sein Vorsicht: Wenn ein case-Zweig nicht mit break endet, wird mit der Ausführung des nächsten Zweigs fortgefahren!

    30. 30 Java-Einführungskurs switch-Anweisung: Beispiel 2 Beispiel: Für Lieferungen nach Schottland und England soll in britische £ umgerechnet werden switch (laenderCode) { case 'I': // Island summe *= 838.536390; waehrung = "ISK"; break; ... case 'S': // Schottland case 'E': // England summe *= 0.675636; waehrung = "GBP"; break; default: waehrung = "EUR"; } System.out.println ("Summe: " + waehrung + summe);

    31. 31 Java-Einführungskurs Schleifen mehrfaches Durchlaufen der gleichen Anweisung oder des gleichen Anweisungsblocks Zahl der Durchläufe wird von Laufbedingung bestimmt Bedingungsschleife while-Schleife do-while-Schleife Zählschleife for-Schleife

    32. 32 Java-Einführungskurs while-Schleife Format while (Bedingung) { Anweisungen; } Bedingung muss ein boolescher Ausdruck sein solange Bedingung true ist, werden Anweisung(en) ausgeführt Beachte: erster Test der Bedingung vor Ausführung der Anweisung wenn Bedingung unmittelbar erfüllt, werden Anweisungen überhaupt nicht ausgeführt!

    33. 33 Java-Einführungskurs while-Schleife: Beispiele Beispiel: Thermostat while (hoersaal.getTemperatur < 20) { hoersaal.heizen; } wenn Temperatur schon >= 20°, wird gar nicht erst geheizt Beispiel: Zählen int n = 0; while (n < 10) { System.out.println (n); n++; }

    34. 34 Java-Einführungskurs do-while-Schleife Format do { Anweisungen; } while (Bedingung); Bedingung muss ein boolescher Ausdruck sein solange Bedingung true ist, werden Anweisung(en) ausgeführt Beachte: erster Test der Bedingung nach einmaliger Ausführung der Anweisung Schleife wird grundsätzlich mindestens einmal durchlaufen!

    35. 35 Java-Einführungskurs do-while-Schleife: Beispiele Beispiel: Eingabe einer positiven Zahl do { System.out.println ("n? "); n = IOTools.readInteger(); } while (n < 0); Eingabe wird abgefragt, bis eine Zahl >= 0 eingegeben wurde Beispiel: Zählen int n = 0; do { System.out.println (n); n++; } while (n < 10);

    36. 36 Java-Einführungskurs for-Schleife Format for (Initialisierung; Bedingung; Schleifenfortschaltung) { Anweisungen; } Initialisierung komma-getrennte Liste von Ausdrücken einmalig vor Beginn der Schleifenbearbeitung ausgewertet typischerweise Initialisierung von Zählvariablen Bedingung boolescher Ausdruck wenn Bedingung true ist, werden Anweisungen ausgeführt ansonsten wird die Schleife abgebrochen

    37. 37 Java-Einführungskurs for-Schleife Format for (Initialisierung; Bedingung; Schleifenfortschaltung) { Anweisungen; } Schleifenfortschaltung komma-getrennte Liste von Ausdrücken immer nach den Anweisungen im Schleifenrumpf ausgeführt typischerweise Weiterschaltung von Zählvariablen Anweisungen Schleifenrumpf, der wiederholt werden soll alle Teile sind optional

    38. 38 Java-Einführungskurs for-Schleife: Bearbeitungsreihenfolge Format for (Initialisierung; Bedingung; Schleifenfortschaltung) { Anweisungen; } 1. Ausführen der Initialisierung 2. Prüfen der Bedingung 3. wenn true, Ausführen der Anweisungen, sonst Abbruch 4. Ausführen der Schleifenfortschaltung 5. weiter mit 2.

    39. 39 Java-Einführungskurs for-Schleife: Beispiele Beispiel: Zählen for (int n = 0; n < 10; n++) { System.out.println (n); } Beispiel: mehrere Initialisierungen, Fortschaltungen for (int n = 0, m = 10; n < 10; n++, m--) { System.out.println ("n=" + n); System.out.println ("m=" + m); } Beispiel: Endlosschleife for ( ; ; ) { System.out.println ("Und täglich grüßt das Murmeltier"); }

    40. 40 Java-Einführungskurs Zusammenfassung bedingte Verzweigungen (if-else) zwei Alternativen der Programmfortsetzung in Abhängigkeit von einer booleschen Bedingung bewachte Anweisungen (switch-case-default) mehrere Alternativen der Programmfortsetzung in Abhängigkeit vom Wert einer Ganzzahl- oder Zeichenvariable while-Schleife abhängig von boolescher Bedingung (vor Ausführung getestet) do-while-Schleife abhängig von boolescher Bedingung (nach Ausführung getestet) for-Schleife abhängig von Zählvariablen, die im Schleifenkopf initialisiert, getestet und fortgeschaltet werden

More Related