- 1 1. O que Você Aprenderá Neste Artigo
- 2 2. O Que “case” Significa em Java (Conclusão Primeiro)
- 2.1 2.1 case É um “Marcador de Ramificação” em uma Instrução switch
- 2.2 2.2 Uma instrução switch “Começa a executar a partir do case correspondente”
- 2.3 2.3 case não é um ramo condicional, mas um “ramo de valor”
- 2.4 2.4 default cobre “Quando nenhum case corresponde”
- 2.5 2.5 Resumo em uma frase para entender case
- 3 3. Sintaxe básica de switch-case (Exemplo mínimo)
- 4 4. A Armadilha do “Fall-through” que Iniciantes Sempre Encontram
- 4.1 4.1 O Que Fall-through Significa
- 4.2 4.2 Por Que Fall-through Acontece
- 4.3 4.3 Por Que Fall-through Não Intencional É Perigoso
- 4.4 4.4 A Regra Básica para Prevenir Fall-through
- 4.5 4.5 Casos Onde Fall-through É Usado Intencionalmente
- 4.6 4.6 Notas ao Usar Fall‑through
- 4.7 4.7 Checklist: Você Entende Fall‑through?
- 5 5. Valores que Você Pode / Não Pode Colocar em case (Surpreendentemente Importante)
- 5.1 5.1 Em Princípio, case Só Pode Usar “Constantes”
- 5.2 5.2 Por que Variáveis Não Podem Ser Usadas em case
- 5.3 5.3 Tipos Comuns que Você Pode Usar em switch
- 5.4 5.4 Exemplos do que Você Não Pode Escrever em case
- 5.5 5.5 switch com enum é Altamente Seguro
- 5.6 5.6 Uma Maneira Simples de Lembrar as Restrições de case
- 6 6. Como Escolher Entre if-else e switch?
- 7 7. Compreendendo Expressões switch (Java 14 e Posteriores)
- 8 8. Outro Significado Frequentemente Confundido em “java case” (Maiúsculas / Minúsculas)
- 9 9. Erros Comuns (Perspectiva de Depuração)
- 10 10. FAQ
1. O que Você Aprenderá Neste Artigo
Este artigo explica, de forma estruturada, os pontos principais que muitas pessoas se perguntam ao buscar por “java case” — desde quem está começando a aprender Java até profissionais que escrevem Java diariamente.
Em particular, este artigo foi escrito para leitores que têm dúvidas como as seguintes.
- Você não tem certeza do que
caseem uma instruçãoswitchrealmente significa - Você quer entender o que acontece se não escrever
breake por que ele é necessário - Você quer diretrizes claras para escolher entre
if-elseeswitch-case - Você quer entender o que é a expressão switch (case ->) introduzida no Java 14+
- Você ficou confuso porque “case” também é usado para significar maiúsculas/minúsculas (case-sensitive)
Esse tipo de confusão é algo que quase todo mundo encontra pelo menos uma vez ao aprender Java.
Neste artigo, não vamos apenas apresentar a sintaxe — também explicaremos:
- por que o Java foi projetado dessa forma
- onde os erros costumam acontecer
- como pensar nisso no desenvolvimento do mundo real
Abordaremos essas perspectivas também.
1.1 Construa uma Compreensão Sistemática do “case” em Java
case é um rótulo de ramificação usado dentro de uma instrução switch ou de uma expressão switch.
Entretanto, muitos iniciantes tendem a cair em situações como estas:
- “Posso copiar a sintaxe, mas não entendo como funciona.”
- “Não consigo explicar por que
breaké necessário.” - “O código roda, mas não tenho certeza se está realmente correto.”
Neste artigo, organizaremos o tema na ordem sintaxe → comportamento → armadilhas,
para que você passe de “usar de forma vaga” a “usar com compreensão”.
1.2 Foque nas Armadilhas Comuns para Iniciantes
Alguns dos erros mais frequentes incluem o seguinte.
- Execução não intencional por esquecer
break - Falta de valores inesperados por não escrever
default - Tentar colocar uma variável em
casee receber um erro - Deixar o
switchmuito longo e prejudicar a legibilidade
Esses erros são difíceis de evitar se você apenas memoriza a gramática.
Este artigo explica por que eles acontecem a partir da perspectiva da especificação da linguagem.
1.3 Cobre Expressões Switch Modernas (Java 14+)
Nas versões recentes do Java, além da instrução switch tradicional, você também pode usar uma expressão switch.
- A nova sintaxe
case value -> action - Por que
breaknão é mais necessário - A vantagem de retornar valores diretamente
Mesmo que você só conheça o estilo antigo ou esteja inseguro sobre as diferenças,
este artigo está estruturado para que você possa comparar ambos os estilos e entendê‑los.
1.4 Também Esclarece Outro Significado Frequentemente Confundido nas Pesquisas por “java case”
A palavra‑chave de busca “java case” costuma incluir outra intenção, como:
- Diferenciar maiúsculas/minúsculas (case-sensitive)
- Ignorar maiúsculas/minúsculas (case-insensitive)
Esses são conceitos diferentes de switch-case, mas utilizam a mesma palavra “case”, o que gera confusão.
Mais adiante no artigo, organizaremos essa diferença e explicaremos
“por que o significado muda dependendo do contexto” de forma fácil de entender.
1.5 Como Ler Este Artigo
A partir daqui, explicaremos as coisas na seguinte ordem.
- O papel básico do “case” em Java
- A sintaxe mínima e o comportamento do
switch-case - Como o fall‑through e o
breakfuncionam - Diretrizes práticas de uso e pensamento de design
- Como usar expressões switch
- Perguntas frequentes (FAQ)
Os exemplos de código são mantidos curtos e fáceis de entender,
para que até iniciantes possam acompanhar sem dificuldade.
2. O Que “case” Significa em Java (Conclusão Primeiro)
2.1 case É um “Marcador de Ramificação” em uma Instrução switch
No Java, case é um rótulo que indica onde a execução deve ramificar dentro de uma instrução switch (ou de uma expressão switch).
Um switch é usado para “selecionar comportamento com base em um valor”, e case define o destino para cada valor.
Primeiro, mantenha este modelo mental mais simples em mente:
switch: o ponto de partida para a verificaçãocase: um marcador que significa “se o valor for este, comece a executar a partir daqui”
O ponto chave é que case em si não é uma expressão condicional — é um rótulo que marca um ponto de correspondência.
2.2 Uma instrução switch “Começa a executar a partir do case correspondente”
Uma instrução switch funciona no seguinte fluxo.
- A expressão em
switch (expression)é avaliada - Ela é comparada a cada valor de
casede cima para baixo - A execução começa a partir do primeiro case correspondente
O que é importante aqui é que não significa “apenas o case correspondente é executado”.
Um case correspondente é simplesmente um ponto de partida. Se você não entender esse mecanismo, ficará confuso mais tarde com o “fall‑through”.
2.3 case não é um ramo condicional, mas um “ramo de valor”
Um equívoco comum entre iniciantes é pensar:
case = uma condição if
Mas na realidade, os papéis são diferentes:
if: avalia se uma condição é verdadeira ou falsacase: verifica apenas se o valor corresponde
Por causa disso, case tem limitações como:
- Você não pode usar operadores de comparação (
>,<,>=, etc.) - Você não pode escrever condições de intervalo
- Em princípio, você só pode especificar valores constantes
Devido a essas regras, switch-case é melhor descrito como um construto para organizar ramos com candidatos predefinidos de forma legível.
2.4 default cobre “Quando nenhum case corresponde”
default é executado quando nenhum dos valores de case corresponde.
- Quando o valor de entrada é inesperado
- Quando novos valores são adicionados posteriormente devido a mudanças de especificação
Para se preparar para essas situações, a melhor prática é escrever um default.
Especialmente em projetos reais, colocar coisas como:
- registro de logs
- exceções
- mensagens de erro
em default ajuda a prevenir código que “falha silenciosamente”.
2.5 Resumo em uma frase para entender case
Em uma frase, o que cobrimos até agora é o seguinte:
Em Java, um case é um rótulo de ramo em uma instrução switch que diz: “Se o valor for este, comece a executar a partir daqui”.
Com esse entendimento, conceitos como break, fall‑through e expressões switch se tornam muito mais fáceis de entender.
3. Sintaxe básica de switch-case (Exemplo mínimo)
Nesta seção, confirmaremos a sintaxe mais básica de switch-case em Java e explicaremos cuidadosamente como o código realmente funciona.
Por enquanto, esqueça as especificações detalhadas e o uso avançado. O objetivo é entender “como escrevê-lo e como o controle flui”.
3.1 Entenda switch-case através da menor forma funcional
O switch-case em Java é escrito assim:
int number = 2;
switch (number) {
case 1:
System.out.println("One");
break;
case 2:
System.out.println("Two");
break;
default:
System.out.println("Other");
}
Vamos percorrer o fluxo passo a passo.
switch (number)avalia o valor denumbercase 1→ não correspondecase 2→ corresponde"Two"é impressobreaksai da instruçãoswitch
O ponto importante é que o switch não termina no momento em que um case corresponde. Se ele termina depende de se há um break.
3.2 break significa “Sair do switch”
break é uma instrução que, após o código de um case ser executado, termina toda a instrução switch.
Iniciantes frequentemente entendem mal o break assim:
- Um símbolo para terminar um case
- Um feitiço mágico que causa um erro se estiver ausente
Mas seu papel real é claramente:
“Não execute mais nenhum case; saia da instrução switch.”
É por isso que isso importa.
3.3 O que acontece se você não escrever break?
Em seguida, vamos ver um exemplo onde omitimos intencionalmente o break.
int number = 1;
switch (number) {
case 1:
System.out.println("One");
case 2:
System.out.println("Two");
default:
System.out.println("Other");
}
Quando você executa este código, a saída será:
One
Two
Other
Aqui está o porquê:
case 1corresponde → a execução começa ali- Sem
break→ o próximocase 2também executa - Então
defaulttambém executa
Este comportamento — onde tudo após o case correspondente executa — é chamado de
fall-through.
3.4 Fall-through É uma Funcionalidade, Não um Bug
Fall-through não é um bug ou falha no Java.
É um comportamento intencionalmente projetado.
Historicamente, switch-case foi projetado com:
- Sintaxe semelhante à C como base
- A capacidade de compartilhar a mesma lógica em múltiplos cases
No entanto, no desenvolvimento moderno de Java,
- é fácil de mal interpretar
- frequentemente se torna uma fonte de bugs
então fall-through não intencional deve ser evitado.
3.5 default É Comumente Escrito por Último
default executa quando nenhum case corresponde.
default:
System.out.println("Other");
Embora seja legal colocar default no meio,
geralmente é escrito por último por legibilidade.
Além disso, adotar o hábito de escrever break no default também
ajuda a prevenir acidentes quando o código é alterado no futuro.
3.6 Pontos Principais da Sintaxe Básica
Para resumir, estes três pontos são os mais importantes:
caseé um rótulo que indica onde a execução começa- Sem
break, ocorre fall-through defaulté escrito para lidar com valores inesperados
Se você entender estes três, já dominou os conceitos básicos de switch-case.
4. A Armadilha do “Fall-through” que Iniciantes Sempre Encontram
4.1 O Que Fall-through Significa
Fall-through é o comportamento em uma declaração switch onde a execução continua do case correspondente para os cases subsequentes enquanto não houver break.
Muitos iniciantes tendem a assumir algo como:
- “Se um case corresponde, apenas aquele case executa.”
- “Não avançará para o próximo case.”
Mas o switch-case do Java não funciona dessa forma.
Um case é apenas um ponto de partida, e você deve definir explicitamente o ponto de parada com break.
4.2 Por Que Fall-through Acontece
Fall-through acontece por causa da estrutura interna de uma declaração switch.
- Uma declaração
switché semelhante a uma estrutura baseada em saltos - A execução salta para a posição do case correspondente
- Depois disso, a execução continua normalmente de cima para baixo
Então, em vez de pensar nele como um “bloco de ramificação” como if-else,
é mais fácil entendê-lo como um mecanismo que inicia o fluxo de execução de algum lugar no meio.
4.3 Por Que Fall-through Não Intencional É Perigoso
Fall-through faz parte do design da linguagem, mas quando não é intencional, torna-se uma fonte de bugs.
Por exemplo:
- Múltiplas mensagens são impressas de forma inesperada
- Lógica executa múltiplas vezes
- Logs ou atualizações de banco de dados acontecem de formas não intencionais
O que é especialmente assustador é que não causa um erro de compilação e “funciona” normalmente.
Isso torna mais difícil notar a causa, e pode ser descoberto mais tarde como um defeito.
4.4 A Regra Básica para Prevenir Fall-through
A regra mais simples para prevenir fall-through é esta:
Sempre escreva
breakno final de cada case
Apenas seguir esta regra previne a maioria dos acidentes de fall-through que iniciantes encontram.
Em projetos reais, é comum ter padrões de codificação como
“Escreva break a menos que haja um motivo especial para não o fazer.”
4.5 Casos Onde Fall-through É Usado Intencionalmente
Por outro lado, há situações em que fall-through é usado intencionalmente.
Um exemplo clássico é quando você quer que múltiplos cases compartilhem o mesmo processamento.
int day = 6;
switch (day) {
case 6:
case 7:
System.out.println("Weekend");
break;
default:
System.out.println("Weekday");
}
Neste exemplo, a intenção é clara: imprimir "Weekend" para ambos:
6(Sábado)7(Domingo)
Quando condições como as seguintes são atendidas:
- os cases são consecutivos
- o mesmo processamento segue
- a intenção é óbvia (ou documentada)
então o fall‑through pode ser uma abordagem segura e legível.
4.6 Notas ao Usar Fall‑through
Se você usar fall‑through intencionalmente,
considerar o leitor é extremamente importante.
- Torne a intenção explícita com um comentário
- Mantenha o processamento curto
- Evite cair completamente no
default
Se não o fizer, fica incerto se o comportamento é intencional ou simplesmente um break esquecido.

4.7 Checklist: Você Entende Fall‑through?
Para confirmar se você entende fall‑through, verifique o seguinte:
- Sem
break, o próximo case também será executado - Fall‑through é uma especificação, não um erro
- No trabalho real, evite por padrão e use apenas quando necessário
Se você chegou até aqui, já superou a maior armadilha do switch-case.
5. Valores que Você Pode / Não Pode Colocar em case (Surpreendentemente Importante)
Nesta seção, organizaremos o que você pode escrever em case e o que não pode.
Este é um ponto onde não apenas iniciantes, mas até desenvolvedores Java experientes às vezes se perguntam,
“Espera—por que isso se torna um erro novamente?”
5.1 Em Princípio, case Só Pode Usar “Constantes”
O que você pode especificar em case é uma constante cujo valor é fixado em tempo de compilação.
Por exemplo, esses valores funcionam sem problemas:
switch (number) {
case 1:
// OK
break;
case 10:
// OK
break;
}
Por outro lado, você não pode escrever algo como isto:
int x = 5;
switch (number) {
case x: // compile-time error
break;
}
A razão é simples: x é uma variável determinada em tempo de execução.
O switch-case precisa ser capaz de finalizar os candidatos de ramificação em tempo de compilação, portanto variáveis e valores dinâmicos não podem ser usados.
5.2 Por que Variáveis Não Podem Ser Usadas em case
Iniciantes frequentemente perguntam:
Se eu posso usar variáveis em uma instrução if, por que não posso usá‑las em case?
Isso se resume à diferença na filosofia de design entre if e switch.
if: avalia condições em tempo de execuçãoswitch: verifica uma correspondência entre valores pré‑determinados
Um switch é uma construção destinada a lidar com ramificações com candidatos conhecidos de forma eficiente e clara.
Portanto, se as condições das suas ramificações mudam dinamicamente, escolher if-else é a abordagem correta.
5.3 Tipos Comuns que Você Pode Usar em switch
Em Java, apenas certos tipos são permitidos em switch. Exemplos típicos incluem:
int,byte,short,charenumString
Em particular, depois que String passou a ser utilizável em switch, códigos como o seguinte se tornaram naturais:
String command = "start";
switch (command) {
case "start":
System.out.println("開始");
break;
case "stop":
System.out.println("停止");
break;
default:
System.out.println("不明なコマンド");
}
Este é um padrão usado com muita frequência em projetos reais, como roteamento de comandos ou tratamento de status.
5.4 Exemplos do que Você Não Pode Escrever em case
Você não pode escrever coisas como as seguintes em case:
- comparações (
>,<,>=, etc.) - notação de intervalo (como
case 1〜5) - resultados de chamadas de método
- expressões calculadas em tempo de execução
Por exemplo, todos os seguintes são erros:
case number > 5:
case getValue():
case a + b:
Estes pertencem ao domínio de ramificação condicional, portanto são casos onde você deve usar if-else.
5.5 switch com enum é Altamente Seguro
Um switch-case usando um enum tem a vantagem de ser type‑safe e menos propenso a bugs.
enum Status {
READY, RUNNING, STOPPED
}
switch (status) {
case READY:
break;
case RUNNING:
break;
case STOPPED:
break;
}
Se novos valores de enum forem adicionados, torna‑se mais fácil notar casos ausentes, portanto essa abordagem é amplamente usada no desenvolvimento real.
5.6 Uma Maneira Simples de Lembrar as Restrições de case
Para lembrar a regra de case, esta frase basta:
No caso, você só pode escrever valores que já estão fixos com antecedência.
Com essa diretriz, fica mais fácil decidir:
- dinâmico →
if - estático →
switch
Isso torna a escolha muito mais direta.
6. Como Escolher Entre if-else e switch?
Uma vez que você comece a entender switch-case, inevitavelmente chegará a esta pergunta:
“Isso não poderia ser escrito com if-else?”
Em muitos casos, isso é verdade—você pode obter o mesmo resultado com qualquer um.
No entanto, no desenvolvimento do mundo real, escolher o certo faz uma grande diferença na legibilidade e manutenibilidade.
6.1 Casos Onde switch É Mais Adequado
switch funciona melhor nas seguintes condições:
- A decisão é baseada em um único valor
- Os valores possíveis são conhecidos com antecedência
- Há muitas ramificações (por exemplo, três ou mais)
- Cada ramificação executa lógica relativamente simples
Exemplos típicos incluem:
- Ramificação por códigos de status
- Mudança de comportamento por strings de comando
- Manipulação de lógica por valor de enum
Nessas situações, switch-case torna a estrutura geral fácil de compreender de relance.
6.2 Casos Onde if-else É Mais Adequado
Por outro lado, if-else é mais apropriado nessas situações:
- Condições de intervalo (por exemplo, “maior ou igual a X”)
- Múltiplas condições combinadas (E / OU)
- Condições que mudam dinamicamente
- Um pequeno número de ramificações
Exemplos incluem:
- Classificação por pontuação (80+, 60+, etc.)
- Verificações de quantidade ou intervalo de datas
- Condições combinando múltiplas flags
Como essas não podem ser expressas bem com switch, usar if-else é a escolha natural.
6.3 Não Force Tudo em switch
Um erro comum de iniciante é:
- Tentar escrever toda a lógica de ramificação com switch
- Substituir declarações if mecanicamente com case
No entanto, switch não é uma solução universal.
Usar uma construção que não se adequa à natureza da condição na verdade prejudica a legibilidade.
A qualidade do código é determinada menos pela “brevidade” e mais por
quão claramente a intenção é comunicada.
6.4 Uma Lista de Verificação Prática para Escolher
Quando você não tiver certeza, pergunte a si mesmo essas perguntas:
- A decisão é baseada em um único valor?
- Os valores possíveis são fixos?
- Posso entender toda a lógica apenas escaneando os cases?
Se todas as respostas forem “sim”, switch é um forte candidato.
Se mesmo uma for “não”, considere if-else.
6.5 Expressões switch como Outra Opção
A partir do Java 14, você também tem expressões switch como uma opção.
- Você quer tratar o resultado da ramificação como um valor
- Você quer evitar fall-through completamente
- Você não quer esquecer
break
Em tais casos, usar uma expressão switch em vez de uma declaração switch tradicional
mantém o código mais limpo e seguro.
6.6 Resumo da Escolha
Em resumo:
- Opções fixas, bem definidas →
switch-case - Condições dinâmicas ou complexas →
if-else
Essa forma de pensar é a base.
7. Compreendendo Expressões switch (Java 14 e Posteriores)
Esta seção explica expressões switch, que diferem das declarações switch tradicionais.
Você pode ter ouvido que “a sintaxe mudou nas versões recentes do Java.”
A conclusão de antemão: expressões switch são uma evolução projetada para reduzir erros e esclarecer a intenção.
7.1 O Que É uma Expressão switch?
O switch tradicional é uma declaração, mas uma expressão switch é uma expressão que retorna um valor.
As diferenças mais óbvias são:
- Usa sintaxe de seta:
case value -> action - Não há necessidade de
break - Todo o switch retorna um único valor
7.2 Comparação com switch Tradicional
Primeiro, o estilo tradicional:
String result;
switch (number) {
case 1:
result = "One";
break;
case 2:
result = "Two";
break;
default:
result = "Other";
}
A mesma lógica escrita como uma expressão switch fica assim:
String result = switch (number) {
case 1 -> "One";
case 2 -> "Two";
default -> "Other";
};
Esta abordagem:
- Não requer uma variável pré‑declarada
- Não pode ocorrer queda (fall‑through) por design
o que resulta em código mais curto e mais claro.
7.3 Por que break não é mais necessário
Em expressões switch, cada case deve produzir exatamente um resultado, de modo que a execução nunca flui para o próximo case.
É por isso que problemas como:
- esquecer
break - queda (fall‑through) não intencional
são estruturalmente impossíveis.
7.4 Escrevendo lógica de múltiplas linhas
Você também pode escrever lógica de múltiplas linhas em uma expressão switch:
String result = switch (number) {
case 1 -> {
System.out.println("Processing 1");
yield "One";
}
case 2 -> {
System.out.println("Processing 2");
yield "Two";
}
default -> "Other";
};
Aqui, yield especifica explicitamente o valor retornado pela expressão switch.
7.5 Quando expressões switch se destacam
Expressões switch são especialmente úteis quando:
- Você quer atribuir o resultado de um ramo diretamente a uma variável
- Você quer evitar completamente o fall‑through
- Você quer tratar a lógica de ramificação como uma expressão
Elas podem ser menos adequadas para lógica longa e com muitos efeitos colaterais.
7.6 Escolhendo entre formas Tradicionais e de Expressão
Na prática, uma regra simples funciona bem:
- Retornar um valor → expressão
switch - Fluxo de controle puro → declaração
switchtradicional
Você não precisa padronizar em apenas um—escolha com base no propósito.
8. Outro Significado Frequentemente Confundido em “java case” (Maiúsculas / Minúsculas)
A palavra‑chave “java case” também é frequentemente usada em um sentido completamente diferente de switch‑case.
Esse significado é a distinção entre maiúsculas e minúsculas.
8.1 case-sensitive vs case-insensitive
Em contextos de programação, “case” é comumente usado assim:
- case‑sensitive: maiúsculas e minúsculas são tratadas como diferentes
- case‑insensitive: maiúsculas e minúsculas são tratadas como iguais
No Java, as comparações de strings são case‑sensitive por padrão.
8.2 equals vs equalsIgnoreCase
Esses dois métodos se comportam de forma muito diferente:
"Java".equals("java"); // false
"Java".equalsIgnoreCase("java"); // true
equals: distingue maiúsculas e minúsculasequalsIgnoreCase: ignora maiúsculas/minúsculas
Ao lidar com entrada de usuário ou comandos, este último ajuda a evitar incompatibilidades desnecessárias.
8.3 Existe alguma relação com switch‑case?
É importante notar que:
- case em
switch‑case - case nas discussões de maiúsculas/minúsculas
são completamente não relacionados em significado.
Eles apenas compartilham a mesma palavra; não há conexão funcional ou sintática.
8.4 Como evitar confusão
Para manter as coisas claras, pense neles assim:
- case em
switch→ um rótulo de ramo - case em strings → distinção entre maiúsculas e minúsculas
Uma vez que você presta atenção ao contexto, fica fácil identificar qual significado é o pretendido.
9. Erros Comuns (Perspectiva de Depuração)
9.1 Esquecendo o break
Este é de longe o erro mais comum.
- O fall‑through passa despercebido
- Saídas ou lógica são executadas múltiplas vezes
Seguir a regra básica “escreva break ao final de cada case” previne isso.
9.2 Não escrever default
Sem default:
- Valores inesperados não provocam nenhuma ação
- Bugs são mais difíceis de detectar
No mínimo, adicionar registro de log ou lançar uma exceção é recomendado.
9.3 Deixando o switch crescer demais
Quando o número de cases cresce demais:
- A legibilidade sofre
- As alterações se tornam arriscadas
Nesses casos, considere usar enum + despacho de método ou ramificação baseada em Map.
9.4 Usando switch onde if é mais apropriado
Forçar verificações de intervalo ou condições compostas em switch torna o código mais difícil de entender.
Vale a pena pausar e perguntar: “Este ramo realmente se adequa ao switch?”
10. FAQ
10.1 O break é obrigatório em case?
Em princípio, sim.
Exceto quando se usa intencionalmente o fall‑through, escrever break torna seu código mais seguro.
10.2 Devo sempre escrever default?
É altamente recomendado.
Você pode detectar valores inesperados e facilitar a depuração.
10.3 A partir de qual versão posso usar expressões switch?
Elas estão oficialmente disponíveis a partir do Java 14.
Não podem ser usadas em versões anteriores.
10.4 É aceitável agrupar vários casos juntos?
Sim, desde que executem a mesma lógica.
Adicionar um comentário para esclarecer a intenção torna ainda mais seguro.
10.5 Como comparar strings sem considerar maiúsculas/minúsculas?
Use equalsIgnoreCase para comparação de strings.
Isso é um conceito separado de switch-case, portanto tenha cuidado para não confundi‑los.


