Java-Schalter: Variablendeklaration und Gültigkeitsbereich

Wie geht der Java-Compiler mit dem folgenden Switch-Block um? Was ist der Gültigkeitsbereich der Variablen 'b'?

Beachten Sie, dass die Variable 'b' nur im ersten Zweig der switch-Anweisung deklariert wird. Der Versuch, es auch im zweiten Zweig zu deklarieren, führt zu einem Kompilierungsfehler "Lokale Variable duplizieren".

    int a = 3;
    switch( a ) {
    case 0:
        int b = 1;
        System.out.println("case 0: b = " + b);
        break;
    case 1:
        // the following line does not compile: b may not have been initialized
        // System.out.println("case 1 before: b = " + b);
        b = 2;
        System.out.println("case 1 after: b = " + b);
        break;
    default:
        b = 7;
        System.out.println("default: b = " + b);
    }

Hinweis: Der obige Code wird mit einem Java 1.6-Compiler kompiliert.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage