Programmierkurs Java - Universität zu Lübeck

Werbung
Programmierkurs Java
Operatoren,
Ausdrücke und Anweisungen
Prof. Dr. Stefan Fischer
Institut für Telematik, Universität zu Lübeck
http://www.itm.uni-luebeck.de/people/fischer
Operatoren
Operatortyp (sortiert nach Vorrang)
Postfix
expr++ expr--
•
Unär
++expr --expr +expr -expr ~ !
Multiplikativ
* / %
Additiv
+ -
Shift
<< >> >>>
Vergleich
< > <=
Gleichheit
==
Bitweises AND
&
Bitweises XOR
^
Bitweises OR
|
Logisches AND
&&
Logisches OR
||
Ternärer Operator
?:
Zuweisung
= += -= *= /= %= &=
^= |= <<= >>= >>>=
Was können wir mit
Variablen und deren Werten
anfangen?
–
–
–
–
–
•
Werte zuweisen
Werte vergleichen
Werte addieren
Werte subtrahieren
usw.
Geschieht über
Operatoren
– Siehe auch
http://download.oracle.com/j
avase/tutorial/java/nutsandb
olts/operators.html
>=
instanceof
!=
#2
Operatoren
• Berechnen neuen Wert (Ergebnis hat bestimmten Datentyp)
• 1 + 1
– Ergebnis 2, Datentyp int
• int i = 1; i = 2 * i;
– Zwei Operatoren (= und *)
– Ergebnis der Multiplikation: 2, Datentyp int;
• 2.0 * 1;
– Ergebnis: 2.0, Datentyp double
• 3/2;
– Ergebnis: 1, Datentyp int
#3
Zuweisungsoperator (=)
• Funktion: Weist einer Variablen einen Wert zu
– Ergebnis der Berechnung der rechten Seite (RVALUE) wird der linken
Seite (LVALUE  der Variablen) zugewiesen
– Rechte Seite wird zuerst ausgewertet
– Wird die Variable rechts verwendet, so hat sie noch den „alten“ Wert
• Beispiel
– int myInt;
myInt = 10;
myInt = 12 * myInt / 2;
myInt = 2 + 9;
(entspricht 12 * 10 / 2  60)
(entspricht 2+9  11)
• Abkürzung: Deklaration und Zuweisung in einem
– int myInt = 10;
#4
Zuweisungsoperator (=): Beispiele
• Beispiele (Deklaration + Zuweisung)
–
–
–
–
–
–
–
–
char
byte
short
int
long
float
double
boolean
c
b
s
i
l
f
d
bo
• Zuweisung
– bo = true;
– bo = i;
– f = i;
– i = f;
=
=
=
=
=
=
=
=
'f';
10;
20;
30;
11111111111;
10.001f;
10.001d;
false;
Ok
Fehler: int  boolean geht nicht
Ok (Safe Conversion, int  float)
Fehler: Verlust von Genauigkeit
#5
Zuweisungsoperator (=): Beispiele
#6
Operatoren für Zahlenvergleiche
• == (gleich)
• != (ungleich)
• >
(größer)
• >= (größer oder gleich)
• <
(kleiner)
• <= (kleiner oder gleich)
• Ergebnis
• Beispiel
– int i = 0;
int j = 10;
System.out.println( i == j );
System.out.println( j < 10 );
• Ausgabe
– false
false
– boolean-Wert
– Werte: true oder false
#7
Operatoren für Boolesche Ausdrücke
• &&
• ||
• !
(und-Verknüpfung)
(oder-Verknüpfung)
(Negation)
• Geben jeweils einen boolean-Wert zurück
• Beispiel
– System.out.println(
( (false && true) || !(1==2) )
);
• Ausgabe
– true
#8
Operatoren für Zahlenarithmetik
•
•
•
•
•
+
*
/
%
(Addition)
(Subtraktion)
(Multiplikation)
(Division)
(Rest-Operator)
• Geben jeweils einen Zahlenwert zurück
• Beispiel
– System.out.println(3 + 9.5);
– System.out.println(10 % 8);
// 12.5, double
// 2, int
#9
Weitere Operatoren für Zahlenarithmetik
• ++
(Inkrement)
•
int i = 3;
• --
(Dekrement)
•
i++; System.out.println(i);
// "4"
•
++i; System.out.println(i);
// "5"
•
System.out.println(++i);
//"6"
•
System.out.println(i++);
// "6"
•
System.out.println(i);
// "7"
•
Geben jeweils einen Zahlenwert zurück
•
Nicht frei von Nebeneffekten
•
Je in zwei Varianten verfügbar
– i++
(Post-Inkrement)
– i--
(Post-Dekrement)
– ++i
(Prä-Inkrement)
– --i
(Prä-Dekrement)
#10
Operatoren zur Typumwandlung
• Explizite Typumwandlung (Casting)
–
–
–
–
Syntax: (Datentyp) Wert
Gibt Wert (der Variablen/Konstante) im angegeben Datentyp zurück
Java handhabt Datentypen sehr strikt
Typkonvertierungen müssen explizit angeben werden
• Falsch
– int i = 3.5f * 6;
– int i = (int) 3.7f * 6;
// Rechter Ausdruck: Typ float
// Ergebnis: 3 * 6 = 18
• Richtig
– int i = (int)(3.7f * 6);
// Ergebnis: 3.5 * 6 = 22.2  22
#11
Ausdrücke und Anweisungen
Ausdruck (engl.: expression)
• Kann aus Operatoren, Variablen, Literalen und
Funktionen (später) bestehen
• Berechnet einen Wert eines bestimmten Datentyps
• Beispiele
–
–
–
–
–
1
 Wert: 1, Typ: int
1 + 2
 Wert: 3, Typ: int
1 + 2.0
 Wert 3.0, Typ: double
3.098 * 12.7 + 8 / 7.0  Wert 40.48...,Typ double
(char) ( 'a' + 7 )
 Wert ‘h’, Typ char
#13
Beispiel
Datei: Beispiele\08-Java-Grundlagen\8-Ausdruecke\Ausdruecke.java
#14
Anweisungen (Statements)
•
Anweisungen müssen (anders als Ausdrücke) keinen Wert zurückgeben
– Jeder Ausdruck ist auch eine Anweisung (Wert des Ausdrucks wird ignoriert)
– Mehrere Ausdrücke werden durch ; getrennt (sequentielle Ausführung)
•
Beispiel: System.out.println(“Hallo“);
– Gibt Hallo auf der Konsole aus, berechnet aber keinen Wert
•
Spezielle Anweisung: Blockanweisung
– Gruppiert Menge von Anweisungen/Ausdrücken zu einer Anweisung
– Syntax: { <keine oder mehrere Anweisungen> }
– Beispiel: {}
– Beispiel: { int i=1+2; System.out.println(“Hallo“); i=i*2; }
#15
Ausgeben und Einlesen von Zeichen
• Bisher: Ausgabe auf der Konsole
– Zwei Ausgabe-“Ströme“: Standard (System.out) und Fehler (System.err)
– Trennen von „echten“ Ausgabedaten und Fehlern
– Normal nicht unterscheidbar, können einzeln „umgeleitet“ werden (siehe GUE
Unix)
• Standardausgabe: System.out
– System.out.println(“Hallo Welt“);  „Hallo Welt“ und beginnt neue Zeile
– System.out.print(“Hallo Welt“);  „Hallo Welt“ (ohne neue Zeile zu beginnen)
– System.out.println();
 Beginnt nur eine neue Zeile
• Fehlerausgabe: System.err
– System.err.println(“Das sollte nicht passieren“);
#16
Beispiel: System.out und System.err
#17
Exkurs: Einlesen von Zeichen
• Wie liest man nun Zeichen von der Tastatur ein?
– Passendes Gegenstück: System.in
• Beispiel: Ein Zeichen von Tastatur lesen
– char c = (char) System.in.read();
– Warum der Typ-Cast?
– Woher weiß man das?
• Umfangreiche Dokumentation von Java
– Sog. Javadoc
– http://docs.oracle.com/javase/7/docs/api/java/lang/System.html
#18
Beispiel
#19
Herunterladen