EMZETT.
Login

Statements

Kurz: Eine einzelne, mit Semikolon abgeschlossene Anweisung — der kleinste ausführbare Baustein in Java (z. B. eine Zuweisung, ein Methodenaufruf, eine Deklaration).

Genauer: Mehrere Statements bilden zusammen einen Block ({ ... }), z. B. den Körper einer Methode oder Schleife. Kontrollstrukturen wie if oder for sind selbst keine Statements im engeren Sinn, sondern steuern, WELCHE Statements ausgeführt werden.

Im Detail

int zahl = 5;                    // Deklarations-Statement
zahl = zahl + 1;                 // Ausdrucks-Statement (Zuweisung)
System.out.println(zahl);        // Ausdrucks-Statement (Methodenaufruf)

Java unterscheidet grob zwischen Ausdrucks-Statements (etwas passiert und terminiert mit ;, z. B. eine Zuweisung, ein Methodenaufruf, i++) und Kontrollfluss-Statements, die selbst KEIN Semikolon am Ende brauchen, weil sie einen Block umschließen (if, for, while, switch). Ein leeres Statement (nur ein Semikolon ;) ist syntaktisch gültig, aber meist ein Tippfehler — z. B. for (int i = 0; i < 10; i++); mit einem versehentlichen Semikolon direkt nach der Schleifenbedingung führt dazu, dass der eigentlich gemeinte Schleifenkörper nur EINMAL nach Schleifenende läuft, statt zehnmal.

Mehrere Statements innerhalb geschweifter Klammern { ... } bilden einen Block, der syntaktisch wie EIN einzelnes Statement behandelt wird — deshalb kann man überall, wo Java ein Statement erwartet (z. B. nach einem if ohne Klammern), entweder genau ein einzelnes Statement ODER einen ganzen Block einsetzen.

Statement vs. Ausdruck (Expression)

Ein feiner, aber wichtiger Unterschied: ein AUSDRUCK (Expression) liefert immer einen Wert (5 + 3, zahl > 0, ein Methodenaufruf mit Rückgabewert), ein STATEMENT dagegen ist eine vollständige Anweisung, die selbst keinen Wert liefert, sondern etwas bewirkt. Ein Ausdruck wird zum Statement, wenn ein Semikolon angehängt wird (zahl + 3; ist syntaktisch gültig, aber sinnlos, weil das Ergebnis nirgendwo landet) — nicht jeder Ausdruck darf aber als eigenständiges Statement stehen: 5 + 3; allein ist zwar syntaktisch ein “Expression Statement”, der Java-Compiler lässt aber nur bestimmte Ausdruckstypen als eigenständige Statements zu (Zuweisungen, Inkrement/Dekrement, Methodenaufrufe, Objekterzeugung) — ein reiner Rechenausdruck wie 5 + 3; ohne Zuweisung ist deshalb ein Compilerfehler.

Deklarations-, Ausdrucks- und Kontrollfluss-Statements

Java-Statements lassen sich grob in drei Kategorien einteilen:

// Deklarations-Statement: erzeugt eine neue Variable
int zahl;
 
// Ausdrucks-Statement: eine Zuweisung, ein Aufruf, ein Inkrement
zahl = 5;
zahl++;
System.out.println(zahl);
 
// Kontrollfluss-Statement: steuert, WELCHE anderen Statements laufen
if (zahl > 0) {
    System.out.println("positiv");
}

Kontrollfluss-Statements wie if, for, while und switch enthalten selbst wieder andere Statements (oft als Block in { }) — Java-Programme sind letztlich verschachtelte Baumstrukturen aus solchen Statements, die der Compiler beim Parsen in genau dieser Baumform (den “Abstract Syntax Tree”) übersetzt, bevor daraus Bytecode entsteht.

Siehe auch: Print Variables, if-Statement