Instruções Switch em Java
Deslize para mostrar o menu
Até agora, if, else e else if têm sido as principais ferramentas para lidar com diferentes situações. Elas funcionam muito bem para verificar condições, intervalos ou comparações.
Mas, às vezes, não estamos comparando intervalos — queremos apenas verificar uma variável em relação a vários valores exatos. Por exemplo:
- um cliente escolhe um método de pagamento;
- um pedido de café possui um tipo específico de retirada;
- um membro de fidelidade seleciona um nível de recompensa.
É aí que as instruções switch se tornam úteis — elas comparam um valor com várias correspondências exatas de forma mais limpa e organizada.
Estrutura
switch (variable) {
case "value1" -> {
// code
}
case "value2" -> {
// code
}
default -> {
// fallback code
}
}
O Java verifica cada case um por um até encontrar uma correspondência.
Exemplo
Main.java
1234567891011121314151617181920212223242526package com.example; public class Main { public static void main(String[] args) { String pickupType = "delivery"; switch (pickupType) { case "pickup": System.out.println("Your coffee will be ready at the counter"); break; case "delivery": System.out.println("Your coffee is on the way"); break; case "dine-in": System.out.println("Enjoy your coffee inside the cafe"); break; default: System.out.println("Unknown order type"); break; } } }
Java verifica pickupType caso a caso — "pickup" não corresponde, "delivery" corresponde, então imprime "Your coffee is on the way" e o break interrompe imediatamente o switch. O bloco default no final funciona como um else final — só é executado quando nenhum dos casos corresponde.
Java 14+ — Nova Sintaxe do Switch
No Java 14 e versões posteriores, uma sintaxe mais recente foi introduzida usando a seta ->:
switch (pickupType) {
case "pickup" -> System.out.println("Your coffee will be ready at the counter");
case "delivery" -> System.out.println("Your coffee is on the way");
case "dine-in" -> System.out.println("Enjoy your coffee inside the cafe");
default -> System.out.println("Unknown order type");
}
O que mudou:
- não é necessário
break; - usa
->em vez de:; - cada caso é automaticamente isolado — sem risco de fall-through;
- mais limpo e fácil de ler.
Ambas as versões funcionam da mesma forma — a nova sintaxe é apenas mais moderna e segura.
Uma boa regra para lembrar:
- Use
if/else ifpara comparações e intervalos; - Use
switchao verificar um valor contra várias opções exatas;
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo