1 / 58

Java-Praxiskurs I

2. Der Java-Praxiskurs I. YOU ARE HERE ?. Einf?hrungObjektorientierte ModellierungJava-SprachkonstruktePakete und ZugriffskontrolleDeklaration von Methoden, Attributen, VariablenAusdr?cke und AnweisungenKontrollstrukturenAusnahmebehandlungInterfacesDatenstrukturenJava-KlassenbibliothekDat

loman
Download Presentation

Java-Praxiskurs I

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. 24. August 2012 Lehrstuhl für Angewandte Telematik / e-Business Java-Praxiskurs I Malte Hülder Vincent Wolff-Marting

    2. 2 Der Java-Praxiskurs I YOU ARE HERE ? Einführung Objektorientierte Modellierung Java-Sprachkonstrukte Pakete und Zugriffskontrolle Deklaration von Methoden, Attributen, Variablen Ausdrücke und Anweisungen Kontrollstrukturen Ausnahmebehandlung Interfaces Datenstrukturen Java-Klassenbibliothek Dateien und Streams Grafische Benutzungsoberflächen Programmierstil

    3. 3 Der Java-Praxiskurs I Klassendeklaration public class Buch { ... }

    4. 4 Der Java-Praxiskurs I Attributdeklaration public class Buch { private String autoren; private String titel; private String verlag; private int jahr; ... }

    5. 5 Der Java-Praxiskurs I Primitive Typen: Zahlen Wahrheitswert (Boolesche Logik) boolean : true oder false Ganzzahl (Zweierkomplement) byte –27...(27–1); dezimal: 42, hexadezimal: 0x2A, oktal: 052 short –215...(215–1); dezimal, hexadezimal, oktal (s.o.) int –231...(231–1); dezimal, hexadezimal, oktal (s.o.) long –263...(263–1); dezimal: 100000000000L Fließkommazahl (IEEE 754) float 32 Bit; Dezimalbruch: 3.1415F, Exponent: -2.567E25F double 64 Bit; Dezimalbruch, 3.1415D, Exponent: 1.79E-308D

    6. 6 Der Java-Praxiskurs I Primitive Typen: Zeichen Zeichen (Unicode) char direkt: 'A' Escape-Sequenz: '\"' Unicode (hex): '\u0022' oktaler ASCII-Code: '\42' Escape-Sequenzen '\"' doppeltes Anführungszeichen '\'' einfaches Anführungszeichen '\\' Backslash '\b' Backspace (ASCII: 8) '\t' Tabulator (ASCII: 9) '\n' Zeilenwechsel (ASCII: 10) '\f' Seitenwechsel (ASCII: 12) '\r' Wagenrücklauf (ASCII: 13)

    7. 7 Der Java-Praxiskurs I Referenztypen primitive Typen: Attribute enthalten Werte komplexere Datenstrukturen werden als Objekte dargestellt String-Objekte, Array-Objekte, Objekte beliebiger Klassen Referenztypen: Attribute enthalten „Verweise“ auf Objekte

    8. 8 Der Java-Praxiskurs I Referenzen auf Objekte mehrere Referenzen können auf das gleiche Objekt zeigen Garbage Collection zerstört nicht mehr referenzierte Objekte explizites „free“ oder „delete“ als Gegenstück zu new unnötig

    9. 9 Der Java-Praxiskurs I Klasse Object alle Klassen haben Oberklasse Object wichtige von Object geerbte Methoden public String toString () gibt textuelle Repräsentation des Objekts aus im Original Ausgabe von Klassenname und Objekt-Hashcode sollte überschrieben werden, um Inhalt der Objektattribute auszugeben wird implizit aufgerufen, wenn man ein Objekt an System.out.println() übergibt – hilfreich zum Testen public boolean equals (Object obj) vergleicht das Objekt mit dem in obj übergebenen Objekt im Original nur Vergleich der Referenzen this und obj sollte überschrieben werden, um Objektattribute inhaltlich zu vergleichen weitere, systemnähere Methoden (hier nicht weiter betrachtet)

    10. 10 Der Java-Praxiskurs I Strings (Zeichenketten) Zeichenketten werden durch Objekte der besonderen Klasse String dargestellt keine explizite Instanziierung notwendig direkte Zuweisung von Literalen möglich String autor1 = "Doberkat"; String autor2 = "Dißmann"; Zeichencodierung in Strings analog zu char-Literalen "Preis: \u20AC 123,45" ? Preis: € 123,45 Achtung: char-Literale stehen in einfachen, String-Literale in doppelten Anführungszeichen! mehr über die Fähigkeiten der String-Klasse später

    11. 11 Der Java-Praxiskurs I Arrays (Felder) Sammlung von Werten des gleichen Typs, wobei auf jeden Wert über einen Index zugegriffen werden kann Deklaration Typ[] feldname; Typ kann primitiver Datentyp, String oder Klasse sein Instanziierung feldname = new Typ[Größe]; Instanziierung mit Initialisierung feldname = new Typ[] {Wert0, Wert1, ..., Wertn}; Zugriff auf bestimmtes Feldelement feldname[Index] Bestimmung der Feldlänge feldname.length

    12. 12 Der Java-Praxiskurs I Arrays: Beispiel getrennte Deklaration, Instanziierung und Initialisierung: String[] autoren; // Deklaration autoren = new String[3]; // Instanziierung autoren[0] = "Gosling"; // Initialisierung durch autoren[1] = "Joy"; // individuellen Zugriff auf autoren[2] = "Steele"; // einzelne Elemente Deklaration, Instanziierung und Initialisierung in einem: String[] autoren = new String[] {"Gosling", "Joy", "Steele"};

    13. 13 Der Java-Praxiskurs I Zugriff auf Array-Elemente Die Nummerierung der Elemente beginnt immer bei 0 und ist immer positiv! Bei einem Feld mit der Länge X ist der größte zulässige Index X-1! String[] fahrstuhl = new String[4]; fahrstuhl[0] = “Erdgeschoss“; fahrstuhl[1] = “Paulaner“; fahrstuhl[2] = “Telematik / e-Business“; fahrstuhl[3] = “Fachsprachenzentrum“;

    14. 14 Der Java-Praxiskurs I Mehrdimensionale Arrays: Erzeugung Deklaration Typ[][] feldname; Zahl der Klammerpaare bestimmt Zahl der Dimensionen Instanziierung feldname = new Typ[Größe0][Größe1]; Instanziierung nicht rechteckiger Arrays Größe einer Dimension abhängig vom Index der „Oberdimension“ feldname = new Typ[Größe0][]; feldname[Index0] = new Typ[GrößeIndex0]; Instanziierung mit Initialisierung feldname = new Typ[][] { {Wert00, Wert01, ..., Wert0n}, {Wert10, Wert11, ..., Wert1m} };

    15. 15 Der Java-Praxiskurs I Mehrdimensionale Arrays: Zugriff Referenz auf bestimmtes Feldelement feldname[Index0][Index1] Referenz auf (n-1)-dimensionales Teilfeld feldname[Index0] Referenz auf n-dimensionales Gesamtfeld feldname Feldlänge der äußeren Dimension feldname.length Feldlänge der nächst-tieferen Dimension feldname[Index0].length

    16. 16 Der Java-Praxiskurs I Methodendeklaration import java.util.Date; public class Buch { public Buch (...) {...} public int ausleihen (...) {...} public void zurueckgeben (...) {...} public void vormerken (...) {...} public Date verlaengern (...) {...} ... }

    17. 17 Der Java-Praxiskurs I Methodendeklaration: Parameter Inhalt der Parameterliste Typen der Parameter, die der Methode übergeben werden müssen Namen, unter denen sie in der Methode angesprochen werden public Buch (String initAutor, String initTitel, String initVerlag, int initJahr) {...} public void zurueckgeben () {...} public Date verlaengern (int tage) {...} Methodenaufruf mit Parametern als Literale oder Variable Buch javaLehrbuch = new Buch ("Doberkat, Dißmann", "Einführung in die OOP mit Java", "Oldenbourg", 1999); ... int zeitraum = 14; Date rueckgabeTermin = javaLehrbuch.verlaengern (zeitraum);

    18. 18 Der Java-Praxiskurs I Parameterübergabe per Wert bei primitiven Typen beim Aufrufen einer Methode werden die Parameterwerte vom aufrufenden Programmteil in die Methode kopiert Wertänderungen der Parameter in der Methode wirken sich nicht auf Werte außerhalb der Methode aus

    19. 19 Der Java-Praxiskurs I Parameterübergabe per Referenz bei Referenztypen beim Aufrufen einer Methode werden die Verweise auf die Objekte vom aufrufenden Teil in die Methode kopiert, nicht die Objekte selbst Veränderungen der Objekte in der Methode wirken sich auf Objekte außerhalb der Methode aus!

    20. 20 Der Java-Praxiskurs I Methodensignatur Methoden werden über ihre Signatur identifiziert bestehend aus Methodenname, Anzahl und Typen der Parameter aber nicht Parameternamen und Rückgabetyp Beispiele verschiedene Methodennamen ? verschiedene Signaturen public void ausleihen () {...} public void zurueckgeben () {...} gleiche Methodennamen, Parametertypen ? gleiche Signaturen ? Compiler-Fehlermeldung public void vormerken (String benutzerName) {...} public boolean vormerken (String vormerkName) {...} verschiedene Parametertypen ? verschiedene Signaturen public Date verlaengern (int tage) {...} public Date verlaengern () {...}

    21. 21 Der Java-Praxiskurs I Überladen von Methoden Möglichkeit, unterschiedliches Methodenverhalten in Abhängigkeit von den gegebenen Parametern zu definieren gleicher Methodenname, verschiedene Parameterlisten public Date verlaengern (int tage) { ... // Benutzerdefinierte Verlaengerung leihFrist = leihFrist + tage; ... } public Date verlaengern () { ... // Default-Verlaengerungsfrist (2 Wochen) leihFrist = leihFrist + 14; ... }

    22. 22 Der Java-Praxiskurs I Überladen von Konstruktoren genau wie bei Methoden möglich beliebte Technik für Initialisierungsvarianten von Objekten wird kein Konstruktor deklariert, so wird implizit ein leerer Standardkonstruktor verwendet public class Leer { public class Leer { ? public Leer () {} } } wird ein Konstruktor mit Parametern deklariert, so muss der leere Konstruktor explizit zusätzlich deklariert werden, um ebenfalls verwendet werden zu können!

    23. 23 Der Java-Praxiskurs I Beenden von Methoden return-Anweisung beendet Methodenausführung und gibt Wert zurück public Date verlaengern () { ... Date rueckgabeTermin = new Date(); ... return rueckgabeTermin; } Bei Methoden ohne Rückgabewert (void) kann die Anweisung weggelassen oder ohne Variable (return;) angegeben werden Verwendung mehrerer return-Anweisungen in einer Methode möglich

    24. 24 Der Java-Praxiskurs I Variablen speichern (wie Attribute) veränderliche Werte versch. Typen werden jedoch innerhalb einer Methode deklariert und existieren daher nur während der Ausführung der Methode! Deklaration vor Verwendung muss der Typ der Variablen festgelegt werden, d.h. welche Werte sie annehmen kann alle primitiven Typen und Referenztypen möglich kein Sichtbarkeitsmodifikator, da immer auf Methode begrenzt mehrere Variablen gleichen Typs komma-getrennt aufführbar public void methode () { int dez, hex; String[] autoren; Date rueckgabeTermin; ... }

    25. 25 Der Java-Praxiskurs I Variablen: Initialisierung Zuweisung von Werten an Variablen mit Operator = public void methode () { ... dez = -42; hex = 0xFFD6; autoren = new String[2]; autoren[0] = "Doberkat"; autoren[1] = "Dißmann"; rueckgabeTermin = new Date(); ... } Kombination von Deklaration und Initialisierung public void methode () { int dez = -42, hex = 0xFFD6; String[] autoren = new String[] {"Doberkat", "Dißmann"}; Date rueckgabeTermin = new Date(); ... }

    26. 26 Der Java-Praxiskurs I Konstanten: Primitive Typen Modifikator final bewirkt, dass der Wert von Variablen, Parametern, Attributen nach der Initialisierung fixiert ist public class Klasse { private final int ANTWORT_AUF_ALLES = 42; public void methode (final double param) { final int zahl; // Initialisierung nicht sofort nötig ... zahl = 21; // einmalige Zuweisung möglich ... zahl = 12; // Fehler: nur Initialisierung erlaubt param = 2.345; // Fehler: Wert nach Übergabe fixiert } }

    27. 27 Der Java-Praxiskurs I Konstanten: Referenztypen Modifikator final bewirkt nur, dass in Variablen, Parametern, Attributen gespeicherte Referenzen fixiert sind Attribute der referenzierten Objekte können weiterhin geändert werden! public void methode () { final Klasse objekt = new Klasse(); // Referenz fixiert ... objekt.x = 5; // Werte des ref. Objekts noch änderbar ... objekt = null; // Fehler: Referenz nicht mehr änderbar ... } }

    28. 28 Der Java-Praxiskurs I Blöcke und Sichtbarkeit (Scope) Java-Code ist in verschachtelten Blöcken strukturiert, die durch { } begrenzt werden Variablen gelten nur in dem Block, in dem sie deklariert sind Variablen können nicht in „Unterblöcken“ deklariert werden, wenn sie bereits in „Oberblöcken“ deklariert wurden public void methode (int param) { int param = 1; // Fehler: param schon deklariert int zahl = 2; // zahl ab hier sichtbar if (...) { int zahl = 3; // Fehler: zahl bereits deklariert zeichen = 'A'; // Fehler: zeichen nicht deklariert char zeichen = 'B'; // zeichen erst ab hier sichtbar } zeichen = 'C'; // Fehler: zeichen nicht mehr dekl. if (...) { char zeichen = 'D'; // zeichen wieder deklarierbar } }

    29. 29 Der Java-Praxiskurs I Überdecken von Attributen Deklaration von Variablen mit bereits verwendeten Attributnamen führt zur Überdeckung der Attribute sowohl Variablen als auch Attribute bleiben zugänglich Variablen über ihren Bezeichner, Attribute über this.Bezeichner this ist Referenz auf Objekt, zu dem die Methode gehört public class Buch() { private int jahr; ... public void setJahr(int jahr) { this.jahr = jahr; // Attribut = Parameter } public int getJahr() { return jahr; // Attribut zurückgeben } }

    30. 30 Der Java-Praxiskurs I Überdecken, Überladen, Überschreiben Überdecken eines Attributs Deklaration einer Methodenvariable mit gleichem Namen wie Attribut des Objekts Zugriff auf Methodenvariable über den Namen Zugriff auf überdecktes Attribut über this-Referenz und Name Überladen einer Methode Deklaration von Methoden mit gleichen Namen, aber unterschiedlichen Signaturen Zugriff auf verschiedene Methoden anhand übergebener Parameter Überschreiben einer Methode Deklaration einer Methode mit gleichem Namen und gleicher Signatur wie Methode der Oberklasse Zugriff auf Methode der Unterklasse über den Namen Zugriff auf Methode der Oberklasse über super-Referenz und Name

    31. 31 Der Java-Praxiskurs I Variablenarten lokale Variablen in einer Methode (oder in einem Block einer Methode) deklariert gültig von Deklaration bis Ende des Blocks/der Methode Parameter im Kopf einer Methode oder eines Konstrukturs deklariert gültig in gesamter Methode/gesamtem Konstruktor Attribute (Instanzvariablen) in einer Klasse deklariert in individuellen Objekten gültig von Instanziierung bis Zerstörung Klassenvariablen in einer Klasse mit Modifikator static deklariert nicht an Instanzen der Klasse gebunden, sondern im gesamten Programm gültig

    32. 32 Der Java-Praxiskurs I Klassenvariablen nicht an Instanzen der Klasse gebunden, sondern im gesamten Programm gültig in UML: Kennzeichnung durch Unterstreichung oder alternativ durch „{isStatic}“ in Java: mit Schlüsselwort static deklarierte Attribute public class Klasse { public static int variable; public static final String KONSTANTE = "Konstante"; ... } Zugriff über den Klassennamen ohne vorherige Instanziierung eines Objekts Klasse.variable = 42; System.out.println (Klasse.KONSTANTE);

    33. 33 Der Java-Praxiskurs I Klassenmethoden mit Schlüsselwort static deklarierte Methoden dürfen ausschließlich auf Klassenvariablen und andere Klassenmethoden zugreifen, nicht auf „normale“ Attribute und Methoden! public class Statistik { public static float durchschnitt (...); } Zugriff über den Klassennamen ohne vorherige Instanziierung eines Objekts float avg = Statistik.durchschnitt (...); public static void main() ist Klassenmethode zu Programmbeginn können noch keine Objekte instanziiert sein

    34. 34 Der Java-Praxiskurs I main-Klassenmethode in BlueJ nicht über ein Objekt aufrufbar, sondern nur über die Klasse

    35. 35 Der Java-Praxiskurs I Zusammenfassung Sichtbarkeitsmodifikatoren public, protected, (paketsichtbar), private Primitive Datentypen und ihre Literale boolean; short, byte, int, long; float, double; char Referenzdatentypen Referenzen auf Objekte, Garbage Collection Object, String, Arrays Methodendeklaration und Methodensignatur Parameterübergabe per Wert und per Referenz Überladen von Methoden und Konstruktoren Deklaration von Variablen und Konstanten Überdecken von Attributen Blöcke und Sichtbarkeit Klassenvariablen und –methoden (static)

    36. 36 Der Java-Praxiskurs I YOU ARE HERE ? Einführung Objektorientierte Modellierung Java-Sprachkonstrukte Pakete und Zugriffskontrolle Deklaration von Methoden, Attributen, Variablen Ausdrücke und Anweisungen Kontrollstrukturen Ausnahmebehandlung Interfaces Datenstrukturen Java-Klassenbibliothek Dateien und Streams Grafische Benutzungsoberflächen Programmierstil

    37. 37 Der Java-Praxiskurs I 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

    38. 38 Der Java-Praxiskurs I 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;

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

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

    41. 41 Der Java-Praxiskurs I 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"

    42. 42 Der Java-Praxiskurs I 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;

    43. 43 Der Java-Praxiskurs I 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!

    44. 44 Der Java-Praxiskurs I 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! Bei Konvertierung von... großen 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)

    45. 45 Der Java-Praxiskurs I 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

    46. 46 Der Java-Praxiskurs I 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

    47. 47 Der Java-Praxiskurs I 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

    48. 48 Der Java-Praxiskurs I 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

    49. 49 Der Java-Praxiskurs I 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

    50. 50 Der Java-Praxiskurs I 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;

    51. 51 Der Java-Praxiskurs I 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

    52. 52 Der Java-Praxiskurs I Your Mission

    53. 53 Der Java-Praxiskurs I 1. Spiel, Satz und Sieg gegeben: Codefragment - Klasse TennisSpieler UML-Diagramm Neue Objekte erzeugen this-Referenz Zugriff auf die Attribute und Methoden Konstruktoren Instanz- und Klassenvariablen Verschiedene Erweiterungen der Klasse TennisSpieler

    54. 54 Der Java-Praxiskurs I 2. Mensch, ärgere Dich nicht! Die Klasse Mensch Klassenvariablen Konstruktoren Get- und Set-Methoden Die toString-Methode Die Klasse TestMensch Ungleiche Vergleiche

    55. 55 Der Java-Praxiskurs I 3. Inkrement und kein Ende gegeben: Java-Programm mit Inkrement-Operatoren Programmablauf nachvollziehen Vorhersage überprüfen

    56. 56 Der Java-Praxiskurs I 4. Dosenravioli gegeben: Programmfragment mathematische Formeln für geometrische Berechnungen in Java implementieren

    57. 57 Der Java-Praxiskurs I

    58. 58 Der Java-Praxiskurs I

More Related