O que é um Switch Case em Java e como usá-lo?
Publicados: 2022-03-04O switch case em Java é uma das muitas instruções Java que informam à linguagem de programação o que fazer. Assim como frases em inglês que dão uma ideia completa do texto e cláusulas de inclusão, as instruções Java são comandos que incluem uma ou mais expressões que o interpretador Java executa. Em termos mais simples, uma instrução Java é uma instrução que explica o que deve acontecer.
Uma instrução Java termina em um ponto e vírgula (;) e diz ao Java para processar instruções até esse ponto e vírgula. Por padrão, o interpretador Java segue a ordem em que as instruções são escritas e executa uma instrução após a outra. No entanto, as instruções que controlam o fluxo do programa (instruções de controle de fluxo), como loops e condicionais, não seguem a ordem de execução padrão. Este artigo se concentra em um desses tipos de mecanismo de controle de seleção – a instrução Java switch case.
Índice
O que é um switch case em Java?
Java suporta três tipos de instruções: instruções de expressão para alterar valores de variáveis, chamar métodos e criar objetos, instruções de declaração para declarar variáveis e instruções de fluxo de controle para determinar a ordem de execução das instruções.
A instrução Java switch case é um tipo de instrução de fluxo de controle que permite que o valor de uma expressão ou variável altere o fluxo de controle da execução do programa por meio de uma ramificação multidirecional. Em contraste com as instruções if-then e if-then-else, a instrução switch Java possui vários caminhos de execução. Switch case em Java funciona com tipos de dados primitivos short, byte, int e char. A partir do JDK7, o switch Java também pode ser usado com a classe String, tipos enumerados e classes Wrapper que agrupam tipos de dados primitivos como Byte, Character, Integer e Short.
O corpo de uma instrução switch case em Java é chamado de bloco switch. Cada instrução no bloco switch é rotulada usando um ou mais casos ou rótulos padrão. Portanto, a instrução switch avalia sua expressão, seguida pela execução de todas as instruções que seguem o rótulo case correspondente.
Abaixo está a sintaxe da instrução switch case:
// comando switch
alternar (expressão)
{
// declarações case
// os valores devem ser do mesmo tipo de expressão
valor do caso1:
// Afirmações
pausa; // pausa é opcional
valor do caso2:
// Afirmações
pausa; // pausa é opcional
// Podemos ter qualquer número de declarações case
// abaixo está a declaração padrão, usada quando nenhum dos casos é verdadeiro.
// Nenhuma pausa é necessária no caso padrão.
predefinição :
// Afirmações
}
Exemplo da instrução switch Java
O exemplo de código Java a seguir declara um int chamado “month” cujo valor representa um dos 12 meses do ano. O código usa a instrução switch case para exibir o nome do mês com base no valor do mês.
classe pública SwitchExample {
public static void main(String[] args) {
int mês = 6;
String mêsString;
mudar (mês) {
caso 1: monthString = “Janeiro”;
pausa;
caso 2: monthString = “Fevereiro”;
pausa;
caso 3: monthString = “março”;
pausa;
caso 4: monthString = “abril”;
pausa;
caso 5: monthString = “Maio”;
pausa;
caso 6: monthString = “Junho”;
pausa;
caso 7: monthString = “Julho”;
pausa;
caso 8: monthString = “agosto”;
pausa;
caso 9: monthString = “Setembro”;
pausa;
caso 10: monthString = “Outubro”;
pausa;
caso 11: monthString = “Novembro”;
pausa;
caso 12: monthString = “dezembro”;
pausa;
default: monthString = “Mês inválido”;
pausa;
}
System.out.println(monthString);
}
}
Saída: junho
Objetivo da instrução break no caso do switch Java
A instrução break é um aspecto essencial do caso do switch Java que encerra a instrução switch delimitadora. A instrução break é necessária porque, sem ela, as instruções no bloco switch falhariam. Assim, independentemente da expressão dos rótulos case sucessivos, todas as instruções após o rótulo case correspondente são executadas sequencialmente até que uma instrução break seja encontrada.
O código a seguir é um exemplo para mostrar um bloco switch que falha na ausência da instrução break.
public class SwitchExampleFallThrough {
public static void main(String[] args) {
java.util.ArrayList<String> futureMonths =
new java.util.ArrayList<String>();
int mês = 6;
mudar (mês) {
caso 1: futureMonths.add(“Janeiro”);
caso 2: futureMonths.add(“Fevereiro”);
caso 3: futureMonths.add(“Março”);
caso 4: futureMonths.add(“Abril”);
caso 5: futureMonths.add(“Maio”);
caso 6: futureMonths.add(“June”);
caso 7: futureMonths.add(“Julho”);
caso 8: futureMonths.add(“Agosto”);
caso 9: futureMonths.add(“Setembro”);
caso 10: futureMonths.add(“Outubro”);
caso 11: futureMonths.add(“Novembro”);
caso 12: futureMonths.add(“Dezembro”);
pausa;
padrão: quebrar;
}
if (futureMonths.isEmpty()) {
System.out.println(“Número do mês inválido”);
} outro {
for (String monthName : futureMonths) {
System.out.println(monthName);
}
}
}
}
Saída:
junho
julho
agosto
setembro
Outubro
novembro
dezembro
O código acima exibe o mês do ano correspondente ao mês inteiro e os meses seguintes. Aqui, a instrução break final não serve para nada porque o fluxo sai da instrução switch. O uso da instrução break é útil porque torna o código menos propenso a erros e as modificações mais fáceis. A seção padrão no código trata de todos os valores não regulamentados por nenhuma das seções de caso.
Instrução de switch Java com vários rótulos de maiúsculas e minúsculas
As instruções switch em Java também podem ter vários rótulos de maiúsculas e minúsculas. O código a seguir ilustra o mesmo – aqui, o número de dias em um determinado mês do ano é calculado.
class SwitchMúltiplo{
public static void main(String[] args) {
int mês = 2;
int ano = 2020;
int numDias = 0;
mudar (mês) {
caso 1: caso 3: caso 5:
caso 7: caso 8: caso 10:
caso 12:
numDias = 31;
pausa;
caso 4: caso 6:
caso 9: caso 11:
numDias = 30;
pausa;
caso 2:
if (((ano % 4 == 0) &&
!(ano % 100 == 0))
|| (ano % 400 == 0))
numDias = 29;
outro
numDias = 28;
pausa;
predefinição:
System.out.println(“Mês inválido.”);
pausa;
}
System.out.println(“Número de dias = “
+ numDias);
}
}
Saída:
Número de dias = 29
Instruções de caso de alternância Java aninhadas
Um switch aninhado é quando você usa um switch como parte da sequência de instruções de um switch externo. Nesse caso, não há conflito entre as constantes de case no outro switch e aquelas no switch interno porque uma instrução switch define seu próprio bloco.
O exemplo a seguir demonstra o uso de instruções switch-case Java aninhadas :
classe pública TestNest {
public static void main(String[] args)
{
String Branch = “CSE”;
int ano = 2;
mudar (ano) {
caso 1:
System.out.println(“Disciplinas eletivas: Álgebra, Inglês Avançado”);
pausa;
caso 2:
switch (Branch) // switch aninhado
{
caso “CSE”:
caso “CCE”:
System.out.println(“Disciplinas eletivas: Big Data, Machine Learning”);
pausa;
caso “ECE”:
System.out.println(“cursos eletivos : Engenharia de Antena”);
pausa;
predefinição:
System.out.println(“Disciplinas eletivas: Otimização”);
}
}
}
}
Saída:
Disciplinas eletivas: Big Data, Machine Learning
Uso de strings em instruções switch
A partir do JDK7, você pode usar um objeto String na expressão de uma instrução switch. A comparação do objeto string na expressão do comando switch com as expressões associadas de cada rótulo case é como se estivesse usando o método String.equals. Além disso, a comparação de objetos string na expressão da instrução switch faz distinção entre maiúsculas e minúsculas.
O exemplo de código a seguir exibe o tipo de jogo com base no valor da String chamada “game”.
classe pública StringInSwitchStatementExample {
public static void main(String[] args) {
Jogo de cordas = “Críquete”;
trocar(jogo){
case “Vôlei”: case”Futebol”: case”Críquete”:
System.out.println(“Este é um jogo ao ar livre”);
pausa;
case"Jogos de Cartas": case"Xadrez": case"Quebra-cabeças": case"Basquete indoor":
System.out.println(“Este é um jogo interno”);
pausa;
predefinição:
System.out.println(“Que jogo é?”);
}
}
}
Saída:
Este é um jogo ao ar livre
Regras a serem lembradas ao usar instruções switch Java
Seria melhor se você mantivesse certas regras em mente ao usar instruções switch Java . Segue uma lista do mesmo:
- O valor de um caso e a variável no switch devem ter o mesmo tipo de dados.
- As instruções switch Java não permitem valores de maiúsculas e minúsculas duplicados.
- Um valor de caso deve ser literal ou uma constante. Variáveis não são permitidas.
- O uso da instrução break dentro do switch encerra uma sequência de instruções.
- A instrução break é opcional e sua omissão continuará a execução no caso subsequente.
- A instrução padrão também é opcional e pode ocorrer em qualquer lugar dentro do bloco switch. Se não for colocado no final, uma instrução break deve ser adicionada após a instrução padrão para pular a execução da instrução case seguinte.
Caminho a seguir
Java tem popularidade incomparável entre programadores e desenvolvedores e é uma das linguagens de programação mais procuradas atualmente. Desnecessário dizer que desenvolvedores iniciantes e engenheiros de software que desejam se qualificar para o mercado de trabalho em constante evolução precisam obter uma fortaleza sobre suas habilidades em Java.
A Certificação PG vinculada ao trabalho do upGrad em Engenharia de Software é especialmente projetada para calouros e candidatos do último ano que desejam aprender a codificar e ser colocados em funções de software de nível básico.
Se você está se perguntando o que o curso online de 5 meses implica, aqui estão alguns destaques para você ter uma ideia:
- Ganhe Especializações MERN Stack e Cloud-Native
- Aprenda as principais habilidades como Java, DSA, CSS3, HTML5, AWS, MERN, bancos de dados SQL e NoSQL e muito mais
- Mais de 500 horas de conteúdo com mais de 350 horas de treinamento prático
- Cinco projetos da indústria e mais de 50 sessões ao vivo
- Preparação para colocação e orientação profissional
- Fóruns de discussão e forte rede de pares
Se você deseja iniciar sua jornada em direção a uma carreira promissora em engenharia de software, aqui está sua chance de aprender com os melhores.
1. O que é um caso em uma instrução switch?
Uma instrução switch em Java permite testar a igualdade de uma variável em relação a uma lista de valores. Aqui, cada valor é conhecido como um caso, e a variável ligada é verificada para cada um dos casos.
2. Quais são as vantagens de uma caixa de comutação?
A principal vantagem das instruções switch case Java sobre as cascatas if-else tradicionais é que a primeira permite que os programadores escrevam um código mais compacto, claro e legível. Por outro lado, as instruções if-else geralmente envolvem muitas repetições de código. Assim, se quisermos alterar uma parte específica do código, teríamos que fazer alterações em outros lugares. Para evitar esse processo demorado e propenso a erros, é mais sensato usar caixas de comutação.
3. Qual é a diferença entre switch case e if-else?
No caso de instruções switch, os casos são executados sequencialmente, um após o outro, até que a palavra-chave break seja encontrada ou a instrução padrão seja executada. Pelo contrário, no caso de instruções if-else, o bloco 'if' ou 'else' é executado dependendo da condição.