580 likes | 1.06k Vues
2. Der Java-Praxiskurs I. YOU ARE HERE ?. Einf?hrungObjektorientierte ModellierungJava-SprachkonstruktePakete und ZugriffskontrolleDeklaration von Methoden, Attributen, VariablenAusdr?cke und AnweisungenKontrollstrukturenAusnahmebehandlungInterfacesDatenstrukturenJava-KlassenbibliothekDat
E N D
1. 24. August 2012 Lehrstuhl fr Angewandte Telematik / e-Business Java-Praxiskurs I Malte Hlder
Vincent Wolff-Marting
2. 2 Der Java-Praxiskurs I YOU ARE HERE ? Einfhrung
Objektorientierte Modellierung
Java-Sprachkonstrukte
Pakete und Zugriffskontrolle
Deklaration von Methoden, Attributen, Variablen
Ausdrcke und Anweisungen
Kontrollstrukturen
Ausnahmebehandlung
Interfaces
Datenstrukturen
Java-Klassenbibliothek
Dateien und Streams
Grafische Benutzungsoberflchen
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...(271); dezimal: 42, hexadezimal: 0x2A, oktal: 052
short 215...(2151); dezimal, hexadezimal, oktal (s.o.)
int 231...(2311); dezimal, hexadezimal, oktal (s.o.)
long 263...(2631); dezimal: 100000000000L
Fliekommazahl (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 Anfhrungszeichen
'\'' einfaches Anfhrungszeichen
'\\' Backslash
'\b' Backspace (ASCII: 8)
'\t' Tabulator (ASCII: 9)
'\n' Zeilenwechsel (ASCII: 10)
'\f' Seitenwechsel (ASCII: 12)
'\r' Wagenrcklauf (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 knnen auf das gleiche Objekt zeigen
Garbage Collection zerstrt nicht mehr referenzierte Objekte
explizites free oder delete als Gegenstck zu new unntig
9. 9 Der Java-Praxiskurs I Klasse Object alle Klassen haben Oberklasse Object
wichtige von Object geerbte Methoden
public String toString ()
gibt textuelle Reprsentation 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, systemnhere 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 mglich
String autor1 = "Doberkat";
String autor2 = "Dimann";
Zeichencodierung in Strings analog zu char-Literalen
"Preis: \u20AC 123,45" ? Preis: 123,45
Achtung: char-Literale stehen in einfachen,String-Literale in doppelten Anfhrungszeichen!
mehr ber die Fhigkeiten der String-Klasse spter
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[Gre];
Instanziierung mit Initialisierung
feldname = new Typ[] {Wert0, Wert1, ..., Wertn};
Zugriff auf bestimmtes Feldelement
feldname[Index]
Bestimmung der Feldlnge
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 Lnge X ist der grte zulssige 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[Gre0][Gre1];
Instanziierung nicht rechteckiger Arrays
Gre einer Dimension abhngig vom Index der Oberdimension
feldname = new Typ[Gre0][];feldname[Index0] = new Typ[GreIndex0];
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
Feldlnge der ueren Dimension
feldname.length
Feldlnge der nchst-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 mssen
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, Dimann",
"Einfhrung in die OOP mit Java", "Oldenbourg", 1999);
...
int zeitraum = 14;
Date rueckgabeTermin = javaLehrbuch.verlaengern (zeitraum);
18. 18 Der Java-Praxiskurs I Parameterbergabe per Wert bei primitiven Typen
beim Aufrufen einer Methode werden die Parameterwertevom aufrufenden Programmteil in die Methode kopiert
Wertnderungen der Parameter in der Methodewirken sich nicht auf Werte auerhalb der Methode aus
19. 19 Der Java-Praxiskurs I Parameterbergabe per Referenz bei Referenztypen
beim Aufrufen einer Methode werden die Verweise auf die Objektevom aufrufenden Teil in die Methode kopiert, nicht die Objekte selbst
Vernderungen der Objekte in der Methodewirken sich auf Objekte auerhalb 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 Rckgabetyp
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 Mglichkeit, unterschiedliches Methodenverhalten in Abhngigkeit 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 mglich
beliebte Technik fr 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 zustzlich deklariert werden, um ebenfalls verwendet werden zu knnen!
23. 23 Der Java-Praxiskurs I Beenden von Methoden return-Anweisung beendet Methodenausfhrung und gibt Wert zurck
public Date verlaengern () {
...
Date rueckgabeTermin = new Date();
...
return rueckgabeTermin;
}
Bei Methoden ohne Rckgabewert (void) kann die Anweisung weggelassen oder ohne Variable (return;) angegeben werden
Verwendung mehrerer return-Anweisungen in einer Methode mglich
24. 24 Der Java-Praxiskurs I Variablen speichern (wie Attribute) vernderliche Werte versch. Typen
werden jedoch innerhalb einer Methode deklariert und existieren daher nur whrend der Ausfhrung der Methode!
Deklaration
vor Verwendung muss der Typ der Variablen festgelegt werden,d.h. welche Werte sie annehmen kann
alle primitiven Typen und Referenztypen mglich
kein Sichtbarkeitsmodifikator, da immer auf Methode begrenzt
mehrere Variablen gleichen Typs komma-getrennt auffhrbar
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] = "Dimann";
rueckgabeTermin = new Date();
...
}
Kombination von Deklaration und Initialisierung
public void methode () {
int dez = -42, hex = 0xFFD6;
String[] autoren = new String[] {"Doberkat", "Dimann"};
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 ntig
...
zahl = 21; // einmalige Zuweisung mglich
...
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 knnen weiterhin gendert 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 Blcke und Sichtbarkeit (Scope) Java-Code ist in verschachtelten Blcken strukturiert,die durch { } begrenzt werden
Variablen gelten nur in dem Block, in dem sie deklariert sind
Variablen knnen nicht in Unterblcken deklariert werden, wenn sie bereits in Oberblcken 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 fhrt zur berdeckung der Attribute
sowohl Variablen als auch Attribute bleiben zugnglich
Variablen ber ihren Bezeichner, Attribute ber this.Bezeichner
this ist Referenz auf Objekt, zu dem die Methode gehrt
public class Buch() {
private int jahr;
...
public void setJahr(int jahr) {
this.jahr = jahr; // Attribut = Parameter
}
public int getJahr() {
return jahr; // Attribut zurckgeben
}
}
30. 30 Der Java-Praxiskurs I berdecken, berladen, berschreiben berdecken eines Attributs
Deklaration einer Methodenvariable mit gleichem Namenwie 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
gltig von Deklaration bis Ende des Blocks/der Methode
Parameter
im Kopf einer Methode oder eines Konstrukturs deklariert
gltig in gesamter Methode/gesamtem Konstruktor
Attribute (Instanzvariablen)
in einer Klasse deklariert
in individuellen Objekten gltig von Instanziierung bis Zerstrung
Klassenvariablen
in einer Klasse mit Modifikator static deklariert
nicht an Instanzen der Klasse gebunden, sondern im gesamten Programm gltig
32. 32 Der Java-Praxiskurs I Klassenvariablen nicht an Instanzen der Klasse gebunden, sondern im gesamten Programm gltig
in UML: Kennzeichnung durch Unterstreichung oder alternativ durch {isStatic}
in Java: mit Schlsselwort 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 Schlsselwort static deklarierte Methoden
drfen ausschlielich 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 knnen 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
Parameterbergabe per Wert und per Referenz
berladen von Methoden und Konstruktoren
Deklaration von Variablen und Konstanten
berdecken von Attributen
Blcke und Sichtbarkeit
Klassenvariablen und methoden (static)
36. 36 Der Java-Praxiskurs I YOU ARE HERE ? Einfhrung
Objektorientierte Modellierung
Java-Sprachkonstrukte
Pakete und Zugriffskontrolle
Deklaration von Methoden, Attributen, Variablen
Ausdrcke und Anweisungen
Kontrollstrukturen
Ausnahmebehandlung
Interfaces
Datenstrukturen
Java-Klassenbibliothek
Dateien und Streams
Grafische Benutzungsoberflchen
Programmierstil
37. 37 Der Java-Praxiskurs I 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
38. 38 Der Java-Praxiskurs I 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;
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 Operatorprioritten 14 Stufen (hoch bis niedrig)
++, --, Vorzeichen, ~, !, (typ)
*, /, %
+, -
<<, >>, >>>
<, <=, >, >=, instanceof
==, !=
&
^
|
&&
||
?:
=
*=, /=, %=, -=, <<=, >>=, >>>=, &=, ^=, |=
Prioritten knnen durch Klammerung gendert werden
41. 41 Der Java-Praxiskurs I 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"
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 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;
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 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!
44. 44 Der Java-Praxiskurs I 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! Bei Konvertierung von...
groen 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)
45. 45 Der Java-Praxiskurs I 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
46. 46 Der Java-Praxiskurs I 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
47. 47 Der Java-Praxiskurs I 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
48. 48 Der Java-Praxiskurs I 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
49. 49 Der Java-Praxiskurs I 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
50. 50 Der Java-Praxiskurs I 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;
51. 51 Der Java-Praxiskurs I 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
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 berprfen
56. 56 Der Java-Praxiskurs I 4. Dosenravioli gegeben: Programmfragment
mathematische Formeln fr geometrische Berechnungen in Java implementieren
57. 57 Der Java-Praxiskurs I
58. 58 Der Java-Praxiskurs I