
Lógica e Algoritmos com Java
18 - Expressões Switch
As switch expressions foram introduzidas no Java 12, trazendo uma forma mais moderna e flexível de escrever estruturas switch. Elas permitem que você use o switch não apenas para executar blocos de código com base em um valor, mas também para retornar um valor diretamente de uma expressão, tornando o código mais compacto e legível.
1. Sintaxe de Switch Expressions
A sintaxe das expressões switch é diferente da estrutura tradicional. A principal diferença é que as expressões switch podem retornar um valor, e não precisam usar a palavra-chave break.
variável = switch (expressão) {
case valor1 -> valor_retornado1;
case valor2 -> valor_retornado2;
case valor3 -> valor_retornado3;
default -> valor_default;
};
Note que: - A palavra-chave -> substitui o uso de : no `case`. - O default pode ser usado, mas não é obrigatório. Caso não seja fornecido, uma exceção será lançada se o valor não corresponder a nenhum dos casos.
2. Exemplo Básico de Switch Expression
Vamos usar uma expressão switch para determinar o nome de um dia da semana baseado em um número.
public class ExemploSwitchExpression {
public static void main(String[] args) {
int dia = 3;
String nomeDia = switch (dia) {
case 1 -> "Domingo";
case 2 -> "Segunda-feira";
case 3 -> "Terça-feira";
case 4 -> "Quarta-feira";
case 5 -> "Quinta-feira";
case 6 -> "Sexta-feira";
case 7 -> "Sábado";
default -> "Dia inválido";
};
System.out.println(nomeDia);
}
}
Saída: Terça-feira
3. Exemplo de Switch Expression com Variáveis de Controle
Você também pode usar expressões switch para realizar múltiplos cálculos ou ações e retornar um valor baseado na expressão.
public class ExemploSwitchComCalculadora {
public static void main(String[] args) {
int a = 10, b = 5;
String operacao = "soma"; // Tente mudar para "subtracao", "multiplicacao" ou "divisao"
int resultado = switch (operacao) {
case "soma" -> a + b;
case "subtracao" -> a - b;
case "multiplicacao" -> a * b;
case "divisao" -> a / b;
default -> 0;
};
System.out.println("Resultado: " + resultado);
}
}
Saída: Resultado: 15
4. Exemplo de Switch Expression com Bloco de Código
Em alguns casos, você pode querer realizar múltiplas instruções para um caso específico. Isso é possível com a sintaxe de expressão switch, que suporta blocos de código dentro de cada case.
public class ExemploSwitchComBloco {
public static void main(String[] args) {
int dia = 3;
String nomeDia = switch (dia) {
case 1 -> {
String diaNome = "Domingo";
yield diaNome; // 'yield' retorna o valor do bloco
}
case 2 -> "Segunda-feira";
case 3 -> "Terça-feira";
case 4 -> "Quarta-feira";
case 5 -> "Quinta-feira";
case 6 -> "Sexta-feira";
case 7 -> "Sábado";
default -> "Dia inválido";
};
System.out.println(nomeDia);
}
}
Saída: Terça-feira
5. Tabela de Sintaxe e Exemplos de Switch Expressions
Componente | Descrição | Exemplo |
---|---|---|
switch | A palavra-chave que inicia a estrutura de escolha. | switch (variável) { ... } |
case | Usada para especificar os valores a serem comparados com a variável. | case valor -> valor_retornado; |
-> | Substitui o uso de ":", sendo usado para associar um valor a um case. | case valor -> valor_retornado; |
yield | Usado para retornar o valor de um bloco de código dentro do switch. | yield valor; |
default | Executado se nenhum dos cases corresponder ao valor da variável. | default -> valor_default; |
6. Conclusão
As switch expressions trazem uma nova abordagem mais moderna e poderosa para as estruturas de escolha em Java. Elas tornam o código mais conciso e, ao mesmo tempo, permitem maior flexibilidade, como o uso de blocos de código e retorno de valores diretamente de cada caso. Além disso, o uso de `yield` facilita o retorno de valores dentro de blocos de código, permitindo que o switch seja usado de forma mais dinâmica e funcional.