Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 6 - Anweisungen

## 6.1 Elementare Anweisungen

- 6.1 Elementare Anweisungen
  - 6.1.1 Die leere Anweisung
    - Syntax
    - Bedeutung
  - 6.1.2 Der Block
    - Syntax
    - Bedeutung
  - 6.1.3 Variablendeklarationen
    - Syntax
    - Bedeutung
  - 6.1.4 Ausdrucksanweisungen
    - Syntax
    - Bedeutung

### 6.1.1 Die leere Anweisung

#### Syntax

    ;

#### Bedeutung

Die einfachste Anweisung in Java ist die leere Anweisung. Sie besteht nur aus dem Semikolon und hat keinerlei Effekt auf das laufende Programm. Eine leere Anweisung kann da verwendet werden, wo syntaktisch eine Anweisung erforderlich ist, aber von der Programmlogik her nichts zu tun ist.

### 6.1.2 Der Block

#### Syntax

    {
      Anweisung1;
      Anweisung2;
      ...
    }

#### Bedeutung

Ein Block ist eine Zusammenfassung von Anweisungen, die nacheinander ausgeführt werden. Alle im Block zusammengefaßten Anweisungen gelten in ihrer Gesamtheit als eine einzelne Anweisung und dürfen überall da verwendet werden, wo syntaktisch eine einzelne elementare Anweisung erlaubt wäre. Ein Block darf auch Anweisungen zur Deklaration von lokalen Variablen haben. Diese sind dann nur innerhalb des Blocks gültig und sichtbar.

### 6.1.3 Variablendeklarationen

#### Syntax

    Typname VariablenName;

oder

    Typname VariablenName = InitialerWert;

#### Bedeutung

Die Deklaration einer lokalen Variable gilt in Java als ausführbare Anweisung. Sie darf daher überall dort erfolgen, wo eine Anweisung verwendet werden darf. Die Sichtbarkeit einer lokalen Variable erstreckt sich von der Deklaration bis zum Ende des umschließenden Blocks.

|  | Lokale Variablen dürfen sich nicht gegenseitig verdecken. Es ist also nicht erlaubt, eine bereits deklarierte Variable `x` in einem tiefer geschachtelten Block erneut zu deklarieren. Das Verdecken von Klassen- oder Instanzvariablen dagegen ist zulässig und wird besonders häufig in Konstruktoren bei der Initialisierung von Instanzvariablen verwendet: |  |
Hinweis

    001 class Punkt
    002 {
    003   int x;
    004   int y;
    005
    006   Punkt(int x, int y)
    007   {
    008     this.x = x;
    009     this.y = y;
    010   }
    011 }

Listing 6.1: Verdecken von Klassen- oder Instanzvariablen

Hier wird eine Klasse `Punkt` definiert, die zwei Instanzvariablen `x` und `y` enthält. Der Konstruktor initialisiert die Instanzvariablen mit den gleichnamigen Parametern. Um nun nicht für die formalen Parameter neue Namen erfinden zu müssen, lassen sich durch lokale Variablen verdeckte Instanzvariablen dadurch wieder aufdecken, daß sie mit dem `this`-Pointer qualifiziert werden.

Das vorliegende Beispiel erscheint zum jetzigen Zeitpunkt sicherlich schwer verständlich, denn bisher wurden weder Klassen noch Methoden noch Konstruktoren eingeführt. Nach Lektüre von Kapitel 7, das sich mit den objektorientierten Eigenschaften von Java beschäftigt, wird es verständlicher sein. Einprägen sollte man sich diesen Stil aber jetzt schon, denn er wird in Java häufig verwendet.

### 6.1.4 Ausdrucksanweisungen

#### Syntax

    Ausdruck;

#### Bedeutung

Ausdrucksanweisungen dienen dazu, Ausdrücke in einem Anweisungskontext auszuführen. Sie werden erzeugt, indem an den Ausdruck ein Semikolon angehängt wird. Da der Rückgabewert des Ausdrucks dabei ignoriert wird, macht eine Ausdrucksanweisung nur dann Sinn, wenn der Ausdruck Nebeneffekte hat. Tatsächlich ist es in Java so, daß innerhalb einer Ausdrucksanweisung nur ganz bestimmte Ausdrücke auftauchen dürfen:

- Zuweisung
- Inkrement und Dekrement
- Methodenaufruf
- Instanzerzeugung

Während es in C beispielsweise möglich ist, den Ausdruck `2+4` in eine Ausdrucksanweisung `2+4;` zu verpacken, ist dies in Java nicht erlaubt. Eine solche Anweisung ist aber auch wenig sinnvoll, und es war daher nur vernünftig, dies in Java nicht zuzulassen.

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de