1. O operador de múltipla escolha:switch

Java tem outro operador interessante que herdou de seu avô (C++). Estamos falando da switchdeclaração. Também poderíamos chamá-lo de operador de múltipla escolha. Parece um pouco complicado:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
Uma expressão ou variável é indicada entre parênteses. Se o valor da expressão for value1, a máquina Java começa a executar code1. Se a expressão for igual a value2, a execução salta para code2. Se a expressão for igual a value3, então code3é executado.
Exemplo:
| Código | Saída do console |
|---|---|
|
|
2. breakdeclaração emswitch
Uma característica importante de uma switchinstrução é que o programa simplesmente pula para a linha necessária (para o bloco de código necessário) e, em seguida, executa todos os blocos de código até o final do arquivo switch. Não apenas o bloco de código correspondente ao valor no switch, mas todos os blocos de código até o final do switch.
Exemplo:
| Código | Saída do console |
|---|---|
|
|
Dada uma temperatura de 36, o programa inserirá a switchinstrução, pulará e executará o primeiro bloco de código (o primeiro caso) e, em seguida, executará alegremente o restante dos blocos de código.
Se você quiser executar apenas um bloco de código — o bloco de código associado ao caso correspondente —, será necessário encerrar o bloco com uma breakinstrução;
Exemplo:
| Código | Saída do console |
|---|---|
|
|
Você pode omitir o breakno último caso da switchinstrução, já que esse bloco é o último com ou sem uma instrução break.
3. Ação padrão:default
Outro ponto importante. O que acontece se nenhum dos casos listados corresponder switchà expressão entre parênteses?
Se um caso correspondente não for encontrado, o restante da switchinstrução será ignorado e o programa continuará a execução após a chave terminar a switchinstrução.
Dito isso, você também pode fazer uma switchinstrução se comportar como a ramificação else em uma if-elseinstrução. Para fazer isso, use a defaultpalavra-chave.
Se nenhum dos cases no switchbloco corresponder ao valor da expressão e switchtiver um defaultbloco, o bloco padrão será executado. Exemplo:
| Código | Saída do console |
|---|---|
|
|
4. Comparando switcheif-else
A switchdeclaração é um pouco semelhante a uma if-elsedeclaração, apenas mais complicada.
Você sempre pode reescrever o código de uma switchinstrução como várias ifinstruções. Exemplo:
| Código com interruptor | Código com if-else |
|---|---|
|
|
O código à esquerda funcionará exatamente da mesma forma que o código à direita.
Uma cadeia de várias if-elseinstruções é preferível quando uma ifinstrução contém várias expressões complexas em cada caso separado.
5. Quais expressões podem ser usadas em uma switchdeclaração?
Nem todos os tipos podem ser usados como caserótulos em uma switchinstrução. Você pode usar literais dos seguintes tipos:
- tipos inteiros:
byte,short,int,long charString- qualquer
enumtipo
Você não pode usar nenhum outro tipo como rótulo de caso.
Exemplo de uso de um enumdentro de uma switchinstrução:
Day day = Day.MONDAY;
switch (day)
{
case MONDAY:
System.out.println("Monday");
break;
case TUESDAY:
System.out.println("Tuesday");
break;
case WEDNESDAY:
System.out.println("Wednesday");
break;
case THURSDAY:
System.out.println("Thursday");
break;
case FRIDAY:
System.out.println("Friday");
break;
case SATURDAY:
System.out.println("Saturday");
break;
case SUNDAY:
System.out.println("Sunday");
break;
}
Observação: se você usar um enumdentro de uma switchinstrução, não precisará escrever o nome da classe na frente de cada valor nos caserótulos. Basta escrever o valor.
GO TO FULL VERSION