Java-Syntax
Grundlegende Java-Syntax verstehen: Anweisungen, Blöcke, Bezeichner, Schlüsselwörter, Groß-/Kleinschreibung und Aufbau einer Java-Quelldatei.
Die Java-Syntax gibt einer .java-Datei ihre Form: wo Anweisungen enden, wie Codeblöcke gruppiert werden, welche Wörter eine besondere Bedeutung für den Compiler haben und welche Zeichen in einem Namen zulässig sind. Diese Regeln werden zur Kompilierzeit überprüft — javac verweigert die Erstellung einer .class-Datei, bis alle Regeln erfüllt sind — deshalb spart man sich durch frühzeitiges Erlernen viele verwirrende Fehler.
Dieses Kapitel behandelt die Regeln, auf die Sie sich im Rest des Buches stützen werden: den Aufbau einer Quelldatei, Anweisungen, Blöcke, Bezeichner, Schlüsselwörter, Kommentare, Groß-/Kleinschreibung und Leerzeichen.
Eine vollständige Java-Quelldatei
Jedes eigenständige Java-Programm benötigt mindestens eine Klasse mit einer main-Methode. Hier ist die minimale Datei:
public class App {
public static void main(String[] args) {
System.out.println("Hello, syntax!");
}
}Auf der Seite passieren drei Dinge:
- Die Klassendeklaration
public class App { ... }schließt alles in eine Klasse ein. - Die Methodendeklaration
public static void main(String[] args) { ... }ist der Einstiegspunkt des Programms. - Die Anweisung
System.out.println(...)erledigt die eigentliche Arbeit.
Die Datei muss als App.java gespeichert werden, da die öffentliche Klasse App heißt. Dies ist eine feste Regel: Eine Quelldatei darf höchstens eine public-Klasse enthalten, und der Dateiname muss exakt mit dem Klassennamen übereinstimmen, einschließlich der Groß- und Kleinschreibung. Siehe Java Hello World für den vollständigen Kompilier- und Ausführungszyklus.
Anweisungen enden mit einem Semikolon
Eine Java-Anweisung ist eine Instruktion, die dem Programm mitteilt, etwas zu tun. Jede Anweisung endet mit einem Semikolon:
int score = 0;
score = score + 5;
System.out.println(score);Da das Semikolon — nicht der Zeilenumbruch — eine Anweisung beendet, können Sie eine lange Anweisung über mehrere Zeilen verteilen oder (weniger lesbar) mehrere Anweisungen in eine Zeile schreiben:
int total = 1 + 2 + 3
+ 4 + 5; // one statement, two lines
int a = 1; int b = 2; // two statements, one lineDas Weglassen eines Semikolons ist der häufigste Anfängerfehler. Der Compiler zeigt auf die Zeile, in der er das Problem bemerkt hat, was üblicherweise die Zeile nach derjenigen ist, in der das Semikolon fehlt — wenn Sie also „';' expected" sehen, prüfen Sie die Zeile oberhalb der markierten.
Blöcke gruppieren Anweisungen
Geschweifte Klammern { und } gruppieren Anweisungen zu einem Block. Klassenrümpfe, Methodenrümpfe, Schleifenrümpfe und if-Rümpfe sind alle Blöcke:
public class Counter { // class block opens
public static void main(String[] args) { // method block opens
for (int i = 0; i < 3; i++) { // loop block opens
System.out.println(i);
} // loop block closes
} // method block closes
} // class block closesEinrückungen sind kein Teil der Syntax (der Compiler ignoriert Leerzeichen), aber jeder Leser erwartet vier Leerzeichen pro verschachteltem Block. Die meisten IDEs formatieren dies beim Speichern automatisch.
Bezeichner
Ein Bezeichner ist ein beliebiger Name, den Sie wählen — für eine Klasse, eine Methode, eine Variable oder eine Konstante. Die Regeln:
- Beginnt mit einem Buchstaben,
_oder$. - Nach dem ersten Zeichen dürfen auch Ziffern folgen.
- Groß-/Kleinschreibung wird unterschieden:
totalundTotalsind verschiedene Namen. - Darf kein reserviertes Schlüsselwort sein (
class,int,returnusw.). - Keine Längenbeschränkung.
Gültig: total, lineCount, _temp, $jquery, userName2.
Ungültig: 2lines (beginnt mit Ziffer), line-count (Bindestrich), class (Schlüsselwort).
Das sind die Regeln, die der Compiler erzwingt. Darüber hinaus hat Java starke Namenskonventionen, die der Compiler ignoriert, die aber jeder Java-Entwickler erwartet:
- Klassen verwenden
UpperCamelCase—BankAccount,HttpServer. - Methoden und Variablen verwenden
lowerCamelCase—accountBalance,parseInput. - Konstanten verwenden
UPPER_SNAKE_CASE—MAX_SIZE.
In der Praxis sind diese Konventionen nicht optional. Das Kapitel Java Variables geht tiefer auf Benennung und Deklaration von Daten ein.
Schlüsselwörter
Java reserviert rund 50 Wörter für die Sprache selbst. Sie können diese nicht als Bezeichner verwenden. Die am häufigsten vorkommenden:
abstract case do finally int private synchronized throws
assert catch double float interface protected this transient
boolean char else for long public throw try
break class enum if new return void while
byte continue extends import null short volatile switchDazu kommen einige kontextbezogene Schlüsselwörter, die in modernem Java hinzugefügt wurden und nur an bestimmten Positionen eine besondere Bedeutung haben (var, yield, record, sealed, permits).
Groß- und Kleinschreibung
Java unterscheidet überall zwischen Groß- und Kleinschreibung — bei Klassennamen, Methodennamen, Variablen und Schlüsselwörtern. System ist nicht dasselbe wie system, und if ist nicht dasselbe wie If. Der Compiler meldet „cannot find symbol", wenn Sie einen Namen falsch schreiben.
Leerzeichen und Zeilenumbrüche
Leerzeichen, Tabulatoren und Zeilenumbrüche zwischen Token sind gleichwertig. Dem Compiler ist es egal, ob Sie schreiben:
int x=1+2;oder:
int x = 1 + 2;Verwenden Sie das, was lesbarer ist; das Standard-Stylesheet (und der Formatter Ihrer IDE) liefern Ihnen die richtige Antwort.
Der einzige Ort, an dem Leerzeichen tatsächlich eine Rolle spielen, sind String- und Zeichenliterale: "Hello world" und "Helloworld" sind verschiedene Werte, und Leerzeichen darin werden exakt so beibehalten, wie sie eingegeben wurden.
Kommentare
Ein Kommentar ist Text, den der Compiler vollständig ignoriert. Java kennt drei Formen:
// line comment — runs to the end of the line
/* block comment —
can span multiple lines */
/**
* Javadoc comment — a block comment whose first character
* is an extra asterisk. Tools generate API docs from these.
*/Verwenden Sie Kommentare, um zu erklären, warum etwas getan wird, und nicht, um zu wiederholen, was der Code offensichtlich tut. Das Kapitel Java Comments behandelt jede Form und wann man sie einsetzen sollte.
Block comments do not nest. Writing /* outer /* inner */ */ ends the comment at the first */, and the leftover */ becomes a syntax error. To comment out a region that already contains /* ... */, use line comments (//) instead.
Ein Programm, das die Regeln anwendet
Beachten Sie, dass jede Anweisung mit ; endet, die Klassen- und Methodenrümpfe Blöcke { ... } sind, die Namen x, y und product gültige Bezeichner sind und die Datei als Demo.java gespeichert werden würde.
Was kommt als Nächstes
Das nächste Kapitel, Java Output, behandelt die drei Ausgabemethoden (print, println, printf), mit denen Sie überprüfen, was Ihre Programme tun. Danach erklärt Java Data Types, welche Arten von Werten Ihre Bezeichner enthalten können.