Wie behandelt der Java-Compiler den folgenden Switch-Block? Was ist der Umfang der 'b' Variable?
Beachten Sie, dass die Variable 'b' nur im ersten Zweig der switch-Anweisung deklariert ist. Der Versuch, es auch in der zweiten Verzweigung zu deklarieren, führt zu einem Kompilierungsfehler "doppelte lokale Variable".
%Vor%Hinweis: Der obige Code wird mit einem Java 1.6 Compiler kompiliert.
Der Bereich von b
ist der Block. Sie haben nur einen Block, der alle case
s enthält. Deshalb erhalten Sie einen Kompilierungsfehler, wenn Sie b
in Ihrer zweiten case
neu deklarieren.
Sie könnten jede case
in einen eigenen Block wie
aber ich denke FindBugs oder CheckStyle würden sich darüber beschweren.
Der Bereich von b
ist der Schalterblock - zwischen der Deklaration und dem Begrenzer }
-
Sie müssen jedoch wissen, dass Sie, wenn Sie int b
in case 1:
deklarieren, NICHT auf die Variable b
in case 0:
Um die Frage zu beantworten, die Sie in den Java-Kommentaren stellen, können Sie dieses einfachere Beispiel überprüfen:
%Vor%Ich hoffe, es hilft.
Tags und Links java scope initialization switch-statement variable-declaration