Ich habe versehentlich eine Java-Anweisung mit zwei Semikolons am Ende geschrieben. Der Java-Compiler zeigt keinen Fehler an und läuft.
Code:
%Vor%Zu Lernzwecken habe ich versucht, verschiedene Zeichen nach dem Semikolon hinzuzufügen, und der Java-Compiler hat den Kompilierzeitfehler als Syntaxfehler auf Token "angezeigt", lösche dieses Token .
Diese Aussage:
%Vor%Warum behandelt Java das Semikolon und andere Zeichen als unterschiedlich?
Weil ein doppeltes Semikolon nicht als doppeltes Semikolon behandelt wird, sondern als Semikolon plus eine leere Anweisung. Und eine leere Aussage, die nichts macht, ist kein Fehler.
Wie in anderen Antworten angegeben, wird das zweite Semikolon normalerweise als leere Anweisung interpretiert, die immer dann zulässig ist, wenn eine Anweisung zulässig ist.
Tatsächlich gibt es Fälle, in denen ein doppeltes Semikolon einen Fehler erzeugt:
%Vor% Wenn der Compiler feststellt, dass ein Standort nicht erreichbar ist (und dies genau in der JLS definiert ist, aber die Standorte direkt nach einem return
, break
, continue
und throw
enthält), gibt es keine Aussage dort erlaubt, nicht einmal ein leeres.
Gemäß dem Java-Standard ist das zweite Semikolon ein leere Aussage .
%Vor%Eine leere Anweisung tut nichts.
Die Ausführung einer leeren Anweisung wird immer normal abgeschlossen.
;
selbst ist ein leerer Operator, also haben Sie im ursprünglichen Fall effektiv zwei Operatoren.
Das Semikolon beendet den Satz.
%Vor%Das zweite Semikolon bedeutet, dass der Satz leer ist.
%Vor%Falsch, weil Sie versuchen, einen unvollständigen Satz zu beenden.
Tags und Links java java-compiler-api