Warum zeigt Java am Ende einer Anweisung keinen Fehler für Doppel-Semikolon?

8

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?

    
M.A.Murali 03.03.2012, 13:22
quelle

6 Antworten

28

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.

    
user529758 03.03.2012, 13:25
quelle
14

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.

    
Paŭlo Ebermann 03.03.2012 17:02
quelle
10

Gemäß dem Java-Standard ist das zweite Semikolon ein leere Aussage .

  

Eine leere Anweisung tut nichts.

%Vor%
  

Die Ausführung einer leeren Anweisung wird immer normal abgeschlossen.

    
dasblinkenlight 03.03.2012 13:29
quelle
1

; selbst ist ein leerer Operator, also haben Sie im ursprünglichen Fall effektiv zwei Operatoren.

    
Alexander Pavlov 03.03.2012 13:25
quelle
1

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.

    
Luiggi Mendoza 03.03.2012 13:26
quelle
0

Weil es kein Fehler ist? Warum fragst du nach Java? Dies ist in den meisten Sprachen mit ähnlicher Syntax ...

    
nosbor 03.03.2012 13:34
quelle

Tags und Links