Questão switch

Pessoal, não consegui entender muito bem essa questão:

[code]public class Switch
{
final static short x = 2;
public static int y = 0;

public static void main(String [] args) 
{
     for(int z = 0; z < 4; z++) 
     {
switch(z) 
{
     case x: System.out.print(z + " - 0\n");
     default: System.out.print(z + " - def\n");
     case x-1: System.out.print(z + " - 1\n"); break;
     case x-2: System.out.print(z + "- 2\n");
}
      }
}

}[/code]

A saída é: 210def1def1

Quando o z é zero, ele testa o 1º case (case x), onde x é igual a 2, então ele passa para o próximo teste, e o próximo teste é default, ele não deveria entrar ai??

E quando o z é 3, ele testa o 1º case (case x), depois passa pelo default, e aqui ele entra, não entendi pq ele entrar aki quando é 3 e não entra quando é zero.

Esse default no meio me deixou confuso.

Será que alguém pode me explicar.

Valeu… :wink:

Olá!

Quando o switch é executado, todas as opçòes são estudadas antes de escolher qual das opções será executada. O default só é executado quando o valor da variável analizada no switch não existe em nenhuma das opções case. O fato do default estar no meio da declaração não muda nada.

Abraço!

Ah…entendi, pensei que ele fosse analisando caso a caso, então ele analisa todas as opções e depois que ele executa. Agora ficou claro.

Valeu pela explicação…