Schreiben Sie beispielsweise einen Code wie diesen:
int i; { int j=1; i=j; }
Wenn dieser Code im Klassendefinitionsbereich vorhanden ist, wissen wir, dass es sich um einen gewöhnlichen Anweisungsblock handelt, der zum Initialisieren des Klasseninhalts verwendet wird Attribute. Es wird aufgerufen, wenn die Klasse instanziiert wird, und einige Methoden können darin ausgeführt werden.
In vielen Fällen wird es in Singleton- und anderen Modi verwendet. Fügen Sie davor ein statisches Element hinzu, um Inhalte für komplexe Klassen zu initialisieren, wodurch einige durch die Ladesequenz verursachte Laufzeitausnahmen vermieden werden können.
Aber was ist, wenn dieser Code in einer Methode erscheint?
Es macht im Grunde überhaupt keinen Sinn. Meiner vorherigen Meinung nach war es nur ein Format zum Einschließen von Code, sonst nichts.
Heute habe ich etwas Code geschrieben, der sich auf „Anweisungsbezeichnung“ bezieht:
label17: int i; int j; ThreadGroup[] arrayOfThreadGroup; if (flag) break label17; return 0;
An der Position „:“ ist eine Ausnahme „Syntaxfehler beim Token „:“, { erwartet nach diesem Token“ aufgetreten.
Das heißt, wenn der Code nicht in einer einzelnen Zeile existieren kann (int i muss eine klare Instanziierungszuweisungsposition innerhalb des Methodenkörpers haben), muss label17 mit einem Anweisungsblock markiert werden.
Das richtige Format ist:
label17: { int i; int j; ThreadGroup[] arrayOfThreadGroup; if (flag) break label17; return 0; } 或者: label17: int i; int j; ThreadGroup[] arrayOfThreadGroup; if (flag){ break label17; return 0;}
Schauen wir uns die falsche Verwendung an:
label13: int x = 0;
Offensichtlich gibt es nach der Beschriftung einen standardmäßigen einzeiligen Anweisungsblock, und zwar diesen x befindet sich an einem beliebigen zukünftigen Speicherort und kann nicht verwendet werden, Fehler. Die Eingabeaufforderung lautet wie folgt:
Mehrere Markierungen in dieser Zeile
- x kann nicht in eine Variable aufgelöst werden
- Syntaxfehler beim Token „int“, löschen Sie dieses Token
Es gibt zwei korrekte Formate:
int x = 0; label13: x = 0; 或者 label13:{ int x = 0;}
Ich vermute also, dass ein früheres Missverständnis darin bestand, dass in Verwendungen wie for(){} und if(){} logisches if() und Anweisungsblock {} zwei unabhängige Syntaxen sein sollten.
Weitere Informationen zur legalen Verwendung von JAVA-Anweisungs-Tags und zur Verwendung von {}-Anweisungsblöcken finden Sie auf der chinesischen PHP-Website für verwandte Artikel!