Comutador Java: declaração de variável e escopo

Como o compilador Java manipula o seguinte bloco de switches? Qual é o escopo da variável 'b'?

Observe que a variável 'b' é declarada apenas na primeira ramificação da instrução switch. A tentativa de declará-lo na segunda ramificação também resulta em um erro de compilação "variável 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: o código acima compila com um compilador java 1.6.

questionAnswers(7)

yourAnswerToTheQuestion