1 / 40

YOU ARE HERE

2. Java-Einf

nerita
Télécharger la présentation

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-Einfhrungskurs YOU ARE HERE ? Organisation Einfhrung Objektorientierte Modellierung Java-Sprachkonstrukte Pakete und Zugriffskontrolle Deklaration von Attributen, Methoden, Variablen Ausdrcke und Anweisungen Kontrollstrukturen Ausnahmebehandlung Java-Klassenbibliothek Datenstrukturen Netzwerk-Programmierung Grafische Benutzungsoberflchen

    2. 2 Java-Einfhrungskurs Ausdrcke und Anweisungen Ausdrcke sind mehrere durch Operatoren verknpfte 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 zurckgegeben 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-Einfhrungskurs Anweisungen und Blcke Anweisungen werden mit Semikolon (;) abgeschlossen leere Anweisung: einzelnes Semikolon Anweisung; ; // leere Anweisung Anweisung; Anweisungen werden der Reihe nach abgearbeitet Blcke (begrenzt durch geschweifte Klammern) fassen Sequenzen von Anweisungen zusammen Anweisung; { Anweisung; Anweisung; Anweisung; } Anweisung;

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

    5. 5 Java-Einfhrungskurs Operatorprioritten 14 Stufen (hoch bis niedrig) ++, --, Vorzeichen, ~, !, (typ) *, /, % +, - <<, >>, >>> <, <=, >, >=, instanceof ==, != & ^ | && || ?: = *=, /=, %=, -=, <<=, >>=, >>>=, &=, ^=, |= Prioritten knnen durch Klammerung gendert werden

    6. 6 Java-Einfhrungskurs String-Konkatenation Operanden: Strings und ggf. primitive Datentypen Ergebnis: String Verknpfung (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-Einfhrungskurs 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 fr Ganzzahlen) Prinkrement, Prdekrement: ++a --a Postinkrement, Postdekrement: a++ a-- Prfix-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-Einfhrungskurs 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 berlufen short a = 2, b = 30000; int c = a * b; // 60000 wre zu gro fr short Vorsicht bei Division von Ganzzahlen short a = 7, b = 2; int c = a / b; // ergibt 3!

    9. 9 Java-Einfhrungskurs explizite Typumwandlung Type Casting-Operator: (typ) variable Vorsicht: Operator hat sehr hohe Prioritt! ggf. Klammerung von zu castenden Ausdrcken notwendig short a = 2, b = 100, c; short a = 7, b = 2; c = (short) (a * b); float c = (float) a / b; Vorsicht: Datenverlust mglich! groe in kleine Ganzzahlen: Verlust der hherwertigen Bits Fliekommazahlen in Ganzzahlen: Verlust der Nachkommastellen double d = -67.89; int i = (int) d; // -67 long-Zahlen in Fliekommazahlen: u.U. nicht exakt mglich auch explizites Casting von Referenztypen mglich String-Umwandlungen ber besondere Methoden (spter)

    10. 10 Java-Einfhrungskurs Bit-Operatoren Operanden und Ergebnis: ganzzahlige primitive Datentypen bitweise Invertierung: ~a bitweise Verknpfung 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-Einfhrungskurs Zuweisungsoperatoren fr alle Datentypen als Ausdruck und Ergebnis: Zuweisungsoperator a = b Variable auf linker Seite erhlt Wert des Ausdrucks auf rechter Seite fr Zahlentypen als Operanden und als Ergebnis: Kombination von Rechen/Bitverknpfungs-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-Einfhrungskurs Logische Operatoren Operanden: boolesche Ausdrcke 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-Einfhrungskurs Vergleichsoperatoren Ergebnis immer boolescher Wert fr alle Datentypen als Operanden: Gleichheit a == b Ungleichheit a != b Vorsicht: Vergleich == nicht mit Zuweisung = verwechseln! fr primitive Datentypen als Operanden: "grer als", "grer als oder gleich" a > b a >= b "kleiner als", "kleiner als oder gleich" a < b a <= b fr Referenztypen und Klassen als Operanden: Prfung 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-Einfhrungskurs Referenzgleichheit vs. Wertgleichheit Vorsicht beim Vergleich von Referenztypen! == prft, ob Referenzen auf gleiche Instanz zeigen != prft, 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 mglich Vergleich von Zeichenketten nur mit entsprechenden Methoden der Klasse String mglich

    15. 15 Java-Einfhrungskurs Bedingte Ausdrcke Beschreibung von Alternativen in Ausdrcken "if-then-else in einem Ausdruck" Syntax a = Bedingung ? WennWahr : WennFalsch Bedingung muss ein Ausdruck mit booleschem Wert sein WennWahr und WennFalsch mssen Ausdrcke 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-Einfhrungskurs Zusammenfassung Ausdrcke Anweisungen und Blcke 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-Einfhrungskurs YOU ARE HERE ? Organisation Einfhrung Objektorientierte Modellierung Java-Sprachkonstrukte Pakete und Zugriffskontrolle Deklaration von Attributen, Methoden, Variablen Ausdrcke und Anweisungen Kontrollstrukturen Ausnahmebehandlung Java-Klassenbibliothek Datenstrukturen Netzwerk-Programmierung Grafische Benutzungsoberflchen

    18. 18 Java-Einfhrungskurs Kontrollstrukturen Anweisungen werden normalerweise nacheinander abgearbeitet Bearbeitungsreihenfolge von Anweisungen und Blcken kann durch Kontrollstrukturen beeinflusst werden bedingte Verzweigungen (if-else) bewachte Anweisungen (switch) Schleifen (for, while, do-while)

    19. 19 Java-Einfhrungskurs Bedingte Verzweigung Auswahl aus zwei Alternativen und davon abhngige Programmfortsetzung if (Bedingung) Anweisung1; else Anweisung2; Bedingung muss ein Ausdruck mit booleschem Wert sein Anweisung1 wird ausgefhrt, wenn Bedingung true ist Anweisung2 wird ausgefhrt, wenn Bedingung false ist else-Teil ist optional wenn Bedingung false ist, wird die if-Anweisung verlassen

    20. 20 Java-Einfhrungskurs if-Anweisung: Beispiel mehrere Anweisungen lassen sich in Blcken 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 mglich if- und else-Zweig sind hier keine Ausdrcke gleichen Werts, sondern Anweisungen bzw. Blcke mehrerer Anweisungen

    21. 21 Java-Einfhrungskurs 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 nchstliegende vorhergehende if, zu dem noch kein else definiert wurde

    22. 22 Java-Einfhrungskurs Verschachtelte if-Anweisungen Vorsicht: Weglassen von else-Zweigen kann bei Verschachtelung Missverstndnisse auslsen! 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-Einfhrungskurs Verschachtelte if-Anweisungen Compiler richtet sich nicht nach der Einrckung, 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), verhlt sich aber nicht wie beabsichtigt (semantisch falsch) semantische Fehler knnen vom Compiler nicht erkannt werden!

    24. 24 Java-Einfhrungskurs Verschachtelte if-Anweisungen Vermeidung des Fehlers durch Einklammerung in Blcke ({ }) 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-Einfhrungskurs Bewachte Anweisungen: Motivation Beispiel: Whrungsumrechnung 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 mgliche Realisierung (naiv): verschachtelte if-Anweisungen

    26. 26 Java-Einfhrungskurs 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); unbersichtlich und fehleranfllig!

    27. 27 Java-Einfhrungskurs switch-Anweisung bersichtlichere und mchtigere Lsung Ausdruck wird ausgewertet und Wert mit Konstanten verglichen Anweisungen ab case-Marke mit "passender" Konstante werden ausgefhrt wenn keine Konstante "passt", werden Anweisungen ab default-Marke ausgefhrt bei break fhrt Programm nach der switch-Anweisung fort

    28. 28 Java-Einfhrungskurs 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-Einfhrungskurs switch-Anweisung: Regeln Ausdruck muss vom Typ short, byte, int oder char sein Konstanten mssen vom gleichen Typ wie Ausdruck sein default-Zweig ist optional default- und case-Zweige drfen leer sein Vorsicht: Wenn ein case-Zweig nicht mit break endet, wird mit der Ausfhrung des nchsten Zweigs fortgefahren!

    30. 30 Java-Einfhrungskurs switch-Anweisung: Beispiel 2 Beispiel: Fr 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-Einfhrungskurs Schleifen mehrfaches Durchlaufen der gleichen Anweisung oder des gleichen Anweisungsblocks Zahl der Durchlufe wird von Laufbedingung bestimmt Bedingungsschleife while-Schleife do-while-Schleife Zhlschleife for-Schleife

    32. 32 Java-Einfhrungskurs while-Schleife Format while (Bedingung) { Anweisungen; } Bedingung muss ein boolescher Ausdruck sein solange Bedingung true ist, werden Anweisung(en) ausgefhrt Beachte: erster Test der Bedingung vor Ausfhrung der Anweisung wenn Bedingung unmittelbar erfllt, werden Anweisungen berhaupt nicht ausgefhrt!

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

    34. 34 Java-Einfhrungskurs do-while-Schleife Format do { Anweisungen; } while (Bedingung); Bedingung muss ein boolescher Ausdruck sein solange Bedingung true ist, werden Anweisung(en) ausgefhrt Beachte: erster Test der Bedingung nach einmaliger Ausfhrung der Anweisung Schleife wird grundstzlich mindestens einmal durchlaufen!

    35. 35 Java-Einfhrungskurs 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: Zhlen int n = 0; do { System.out.println (n); n++; } while (n < 10);

    36. 36 Java-Einfhrungskurs for-Schleife Format for (Initialisierung; Bedingung; Schleifenfortschaltung) { Anweisungen; } Initialisierung komma-getrennte Liste von Ausdrcken einmalig vor Beginn der Schleifenbearbeitung ausgewertet typischerweise Initialisierung von Zhlvariablen Bedingung boolescher Ausdruck wenn Bedingung true ist, werden Anweisungen ausgefhrt ansonsten wird die Schleife abgebrochen

    37. 37 Java-Einfhrungskurs for-Schleife Format for (Initialisierung; Bedingung; Schleifenfortschaltung) { Anweisungen; } Schleifenfortschaltung komma-getrennte Liste von Ausdrcken immer nach den Anweisungen im Schleifenrumpf ausgefhrt typischerweise Weiterschaltung von Zhlvariablen Anweisungen Schleifenrumpf, der wiederholt werden soll alle Teile sind optional

    38. 38 Java-Einfhrungskurs for-Schleife: Bearbeitungsreihenfolge Format for (Initialisierung; Bedingung; Schleifenfortschaltung) { Anweisungen; } 1. Ausfhren der Initialisierung 2. Prfen der Bedingung 3. wenn true, Ausfhren der Anweisungen, sonst Abbruch 4. Ausfhren der Schleifenfortschaltung 5. weiter mit 2.

    39. 39 Java-Einfhrungskurs for-Schleife: Beispiele Beispiel: Zhlen 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 tglich grt das Murmeltier"); }

    40. 40 Java-Einfhrungskurs Zusammenfassung bedingte Verzweigungen (if-else) zwei Alternativen der Programmfortsetzung in Abhngigkeit von einer booleschen Bedingung bewachte Anweisungen (switch-case-default) mehrere Alternativen der Programmfortsetzung in Abhngigkeit vom Wert einer Ganzzahl- oder Zeichenvariable while-Schleife abhngig von boolescher Bedingung (vor Ausfhrung getestet) do-while-Schleife abhngig von boolescher Bedingung (nach Ausfhrung getestet) for-Schleife abhngig von Zhlvariablen, die im Schleifenkopf initialisiert, getestet und fortgeschaltet werden

More Related