O switch/case
é uma estrutura de seleção usada para testar vários valores possíveis de uma variável e executar uma seção de código específica para cada valor. É muito semelhante ao uso de vários if/else
encadeados, mas é mais conciso e mais fácil de ler.
☕ No Java, a sintaxe para o switch/case
é a seguinte:
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (expressão) { case valor1: // código a ser executado se expressão for igual a valor1 break; case valor2: // código a ser executado se expressão for igual a valor2 break; ... default: // código a ser executado se expressão não corresponder a nenhum valor listado } |
A expressão
pode ser uma variável ou uma expressão que retorna um valor int
, char
ou String
. Os valores case devem ser constantes. Se a expressão corresponder a um dos valores case
, o código associado será executado. O break
ao final de cada seção é usado para interromper a execução do switch
e evitar que o código flua para a seção seguinte. O bloco default
é opcional e é executado se nenhum dos casos anteriores corresponder à expressão.
O diagrama de blocos pode ser representado da seguinte maneira:

👨🏫 Diferenças entre switch/case
e if/else
As principais diferenças entre switch/case
e if/else
são:
- Sintaxe: A sintaxe do
switch/case
é diferente da sintaxe doif/else
, o que pode afetar a legibilidade do código. Enquanto oswitch/case
permite uma estrutura de seleção baseada em vários casos, oif/else
é mais adequado para uma única verificação condicional. - Performance: Em alguns casos, o
switch/case
pode ser mais rápido que oif/else
, pois ele utiliza uma tabela de pesquisa para selecionar a opção correta. No entanto, isso depende da complexidade do código e das outras características do programa. - Tipos de dados: O
switch/case
suporta apenas alguns tipos de dados, comoint
,char
eString
(a partir do Java 7). Oif/else
pode lidar com qualquer tipo de dado ou expressão. - Legibilidade: O
switch/case
pode tornar o código mais legível em casos específicos, especialmente quando há várias opções para escolher. No entanto, muitos programadores preferem oif/else
por ser mais flexível e fácil de entender.
👨🏫 Exemplos:
O programa seguinte recebe um número inteiro e retorna o mês do ano correspondente.
☕ Com if...else
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import java.util.Scanner; public class EstruturaIfElse { public static void main(String[] args) { int mes; Scanner s = new Scanner(System.in); System.out.println("\nDigite um valor referente a um MES: "); mes = s.nextInt(); System.out.println(); if (mes == 1) System.out.println("Janeiro"); else if (mes == 2) System.out.println("Fevereiro"); else if (mes == 3) System.out.println("Marco"); else if (mes == 4) System.out.println("Abril"); else if (mes == 5) System.out.println("Maio"); else if (mes == 6) System.out.println("Junho"); else if (mes == 7) System.out.println("Julho"); else if (mes == 8) System.out.println("Agosto"); else if (mes == 9) System.out.println("Setembro"); else if (mes == 10) System.out.println("Outubro"); else if (mes == 11) System.out.println("Novembro"); else if (mes == 12) System.out.println("Dezembro"); else System.out.println("Mes invalido!"); System.out.println(); } } |
☕ Agora utilizando switch...case
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import java.util.Scanner; public class EstruturaSwitchCase{ public static void main(String[] args) { int mes; Scanner s = new Scanner(System.in); System.out.println(); System.out.println("Entre um valor referente a um MES: "); mes = s.nextInt(); System.out.println(); switch (mes) { case 1: System.out.println("Janeiro"); break; case 2: System.out.println("Fevereiro"); break; case 3: System.out.println("Março"); break; case 4: System.out.println("Abril"); break; case 5: System.out.println("Maio"); break; case 6: System.out.println("Junho"); break; case 7: System.out.println("Julho"); break; case 8: System.out.println("Agosto"); break; case 9: System.out.println("Setembro"); break; case 10: System.out.println("Outubro"); break; case 11: System.out.println("Novembro"); break; case 12: System.out.println("Dezembro"); break; default: System.out.println("Mês inválido!"); break; } } } |
Em geral, a escolha entre switch/case
e if/else
depende do contexto e das necessidades específicas do programa. Ambas as estruturas são úteis e podem ser utilizadas de maneira eficaz.
—
📚 REFERÊNCIAS
- Java 8 – Programação de Computadores: Guia prático de introdução, orientação e desenvolvimento – José Augusto N. G. Manzano e Roberto Affonso da Costa Junior.
*Atualizado em 6 de fevereiro de 2023