1. O operador de múltipla escolha:switch
Java tem outro operador interessante que herdou de seu avô (C++). Estamos falando da switch
declaraçã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. break
declaração emswitch
Uma característica importante de uma switch
instruçã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 switch
instruçã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 break
instrução;
Exemplo:
Código | Saída do console |
---|---|
|
|
Você pode omitir o break
no último caso da switch
instruçã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 switch
instrução será ignorado e o programa continuará a execução após a chave terminar a switch
instrução.
Dito isso, você também pode fazer uma switch
instrução se comportar como a ramificação else em uma if-else
instrução. Para fazer isso, use a default
palavra-chave.
Se nenhum dos case
s no switch
bloco corresponder ao valor da expressão e switch
tiver um default
bloco, o bloco padrão será executado. Exemplo:
Código | Saída do console |
---|---|
|
|
4. Comparando switch
eif-else
A switch
declaração é um pouco semelhante a uma if-else
declaração, apenas mais complicada.
Você sempre pode reescrever o código de uma switch
instrução como várias if
instruçõ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-else
instruções é preferível quando uma if
instrução contém várias expressões complexas em cada caso separado.
5. Quais expressões podem ser usadas em uma switch
declaração?
Nem todos os tipos podem ser usados como case
rótulos em uma switch
instrução. Você pode usar literais dos seguintes tipos:
- tipos inteiros:
byte
,short
,int
,long
char
String
- qualquer
enum
tipo
Você não pode usar nenhum outro tipo como rótulo de caso.
Exemplo de uso de um enum
dentro de uma switch
instruçã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 enum
dentro de uma switch
instrução, não precisará escrever o nome da classe na frente de cada valor nos case
rótulos. Basta escrever o valor.
GO TO FULL VERSION