Inhaltsverzeichnis
Die leere Anweisung
Anweisungsblöcke
Variablendeklarationen und die Bedeutung lokaler
Variablen
Ausdrucksanweisungen
Die if-Anweisung
Die switch-Anweisung
Die while-, do- und for-Schleifen
Die erweiterte for-Schleife
Die Anweisungen break und continue
gelabelte Schleifen
Die assert-Anweisung
2
Die leere Anweisung
Syntax:
;
Leere Anweisungen haben keine Auswirkungen
Wird dort verwendet, wo eine Anweisung nur durch
die Syntax erforderlich ist
3
Anweisungsblöcke
Syntax:
{
<Anweisung 1>;
<Anweisung 2>;
}
Ein Block umfasst mehrere einzelne Anweisungen
Ein Block zählt als nur eine Anweisung
Im Block deklarierte Variablen gelten nur für diesen
Block
4
Variablendeklarationen im Block
Syntax:
<Typname> <VariablenName>;
//oder
<Typname> <VariablenName> = <Initialwert>;
Deklarierte Variablen dürfen nicht in einem
verschachteltem Block erneut deklariert werden
Verdecken von Klassen- oder Instanzvariablen ist
zulässig
5
Verdecken von Variablen
Bsp: Initialisierung von Instanzvariablen
class Punkt
{
int x;
int y;
Punkt(int x, int y)
{
this.x = x;
this.y = y;
}
}
6
Ausdrucksanweisungen
Syntax:
<Ausdruck>;
Ausdrucksanweisungen sind:
Zuweisungen
Inkrement und Dekrement
Instanzerzeugung
Methodenaufruf
x=3;
x++;
my_picture=new graph();
my_picture.draw();
Andere Ausdrücke sind nicht erlaubt
7
Die if-Anweisung
Syntax:
if (<Ausdruck>)
<Anweisung 1>;
else
<Anweisung 2>;
Ausdruck muss vom Typ boolean sein, z.B.
if (true) oder if (1==1)
else bezieht sich immer auf das letzte if
8
Die switch-Anweisung
Syntax:
switch (<Ausdruck>)
{
case <Konstante> :
<Anweisung>;
...
default:
}
<Ausdruck> muss vom Typ char, byte, short oder int sein
<Ausdruck> muss kompatibel zu <Konstante> sein
Nach dem Sprung werden alle folgenden Anweisungen
ausgeführt break verwenden;
9
Die while-Schleife
Syntax:
while (<Ausdruck>)
<Anweisung>;
<Ausdruck> muss vom Typ boolean sein
10
Die do-Schleife
Syntax:
do
<Anweisung>;
while (<Ausdruck>);
Schleife wird mindestens einmal ausgeführt
<Ausdruck> muss vom Typ boolean sein
11
Die for-Schleife
Syntax:
for (<init>; <test>; <update>)
<Anweisung>;
<init>, <test> und <update> sind optional
<init> darf aus Deklaration und Initialisierung bestehen
Variablen müssen bei der Deklaration initialisiert werden
Wenn <test> fehlt, wird es durch „true“ ersetzt
<init> und <update> dürfen aus mehreren Ausdrücken
bestehen
12
Die erweiterte for-Schleife
Syntax:
for (<Parameter> : <Ausdruck>)
<Anweisung>
<Parameter> ist eine Deklaration von Datentyp und
Variablenname
<Ausdruck> ist eine Instanz, ein Array oder ein
Ausdruck vom Typ java.lang.iterable
Durchlauf von allen Elementen von vorne nach hinten
13
Bsp. Erweiterte for-Schleife
// Ausgabe aller Elemente des Arrays my_array
for (int i = 0; i < my_array.length; ++i) {
System.out.println(my_array[i]);
}
for (int a : my_array) {
System.out.println(a);
}
14
break und continue
Syntax:
break;
continue;
break verlässt die aktuelle Schleife
continue springt zum nächsten Schleifendurchlauf
Verwendbar in do-, while-, und for-Schleifen
15
Gelabelte Schleifen
Syntax:
<Label>:
for ( int i=1; i<10; i++ ) {
{
break <Label>;
// oder
continue <Label>;
}
}
break und continue verlassen die Schleife mit dem
<Label>
16
Beispiel
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
data[i][j] = i * j;
}
}
for (int i = 0, j = 0; i < 10; i++,j++) {
data[i][j] = i * j;
}
//Produkt größer 43 suchen
loop1:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (data[i][j] > 43) {
System.out.println("Ergebnis: "+i + "*" + j + "=" + data[i][j]);
if (arg2==1) break loop1;
else break;
}
}
}
17
Die assert Anweisung
Syntax:
assert <Ausdruck1> ;
// oder
assert <Ausdruck 1> : <Ausdruck2> ;
Eine Assertion ist eine logische Anweisung im
Programm
Ist die Bedingung erfüllt, läuft das Programm weiter
Ist die Bedingung nicht erfüllt, bricht das Programm
mit einem AssertionError ab.
18
Die assert Anweisung
Syntax:
assert <Ausdruck1> ;
// oder
assert <Ausdruck 1> : <Ausdruck2> ;
<Ausdruck 1> muss vom Typ boolean sein
<Ausdruck 2> ist optional
<Ausdruck 2> dient als Ausgabe im Fehlerfall
19
Die assert Anweisung
Vorteile:
Kurzer Quellcode
Der Grund ist sofort erkennbar
Assertions lassen sich an- und ausschalten
Nachteile:
Kompatibilitätsprobleme
Können auch ungewollt ausgeschaltet werden
20
Die assert Anweisung
Anwendungen:
Debuggen und testen
Precondition und Postcondition einer Methode
Überprüfung von Schleifendurchläufen
Markierung von Zweigen, die normalerweise nicht
erreicht werden sollen
21
Die assert Anweisung
An- und Ausschalten, Kompatibilität:
Assertions benötigen mindestens Java 1.4
java [ -enableassertions | -ea ] [:PaketName... |
:KlassenName ]
java [ -disableassertions | -da ] [:PaketName... |
:KlassenName ]
22
Beispiel
public class assertion_test {
public static void main(String[] args) {
assert args.length >= 2;
int i1 = Integer.parseInt(args[0]);
int i2 = Integer.parseInt(args[1]);
assert i2 != 0 : "Teilen durch 0 nicht
moeglich";
System.out.println(i1 + "/" + i2 + "=" +
(i1/i2));
}
}
23