Conmutador Java: declaración de variables y alcance

¿Cómo maneja el compilador de Java el siguiente bloque de switch? ¿Cuál es el alcance de la variable 'b'?

Tenga en cuenta que la variable 'b' se declara solo en la primera rama de la instrucción switch. Intentar declararlo en la segunda rama da como resultado un error de compilación de "variable local duplicada".

    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);
    }

Nota: el código anterior se compila con un compilador java 1.6.

Respuestas a la pregunta(7)

Su respuesta a la pregunta