Palavra-chave switch em Java

A palavra-chave switch em Java é usada para definir uma estrutura de controle que seleciona um bloco de código para ser executado com base no valor de uma expressão. O switch é útil para lidar com múltiplas condições quando você deseja comparar uma variável com diferentes valores constantes.

Sintaxe

switch (expressao) {
    case valor1:
        // Código a ser executado se expressao == valor1
        break; // Opcional, encerra o bloco do case
    case valor2:
        // Código a ser executado se expressao == valor2
        break; // Opcional, encerra o bloco do case
    // Outros casos conforme necessário
    default:
        // Código a ser executado se nenhum dos casos for verdadeiro
}

Explicação dos Componentes

  • expressao: Deve ser uma expressão que resulta em um valor do tipo byte, short, int, char, String (a partir do Java 7), ou um enum.
  • case valor: Cada bloco case compara o valor da expressao com um valor específico. Se houver correspondência, o bloco de código associado a esse case será executado.
  • break: Termina a execução do bloco case. Se omitido, o fluxo continuará para o próximo case (comportamento conhecido como fall-through).
  • default: Um bloco opcional que é executado se nenhum dos valores nos blocos case corresponder ao valor da expressão.

Exemplos

Exemplo 1: Uso com int

public class ExemploSwitch {
    public static void main(String[] args) {
        int dia = 3;

        switch (dia) {
            case 1:
                System.out.println("Domingo");
                break;
            case 2:
                System.out.println("Segunda-feira");
                break;
            case 3:
                System.out.println("Terça-feira");
                break;
            case 4:
                System.out.println("Quarta-feira");
                break;
            case 5:
                System.out.println("Quinta-feira");
                break;
            case 6:
                System.out.println("Sexta-feira");
                break;
            case 7:
                System.out.println("Sábado");
                break;
            default:
                System.out.println("Dia inválido");
        }
    }
}

Exemplo 2: Uso com String

public class ExemploSwitchString {
    public static void main(String[] args) {
        String fruta = "Manga";

        switch (fruta) {
            case "Maçã":
                System.out.println("A fruta é Maçã");
                break;
            case "Manga":
                System.out.println("A fruta é Manga");
                break;
            case "Banana":
                System.out.println("A fruta é Banana");
                break;
            default:
                System.out.println("Fruta desconhecida");
        }
    }
}

Exemplo 3: Comportamento de Fall-Through

public class ExemploSwitchFallThrough {
    public static void main(String[] args) {
        int dia = 3;

        switch (dia) {
            case 1:
            case 2:
            case 3:
                System.out.println("Início da semana");
                break;
            case 4:
            case 5:
                System.out.println("Meio da semana");
                break;
            case 6:
            case 7:
                System.out.println("Fim de semana");
                break;
            default:
                System.out.println("Dia inválido");
        }
    }
}

Regras Importantes

  • Tipagem: O tipo da expressão do switch deve ser compatível com os valores nos casos. A partir do Java 7, você pode usar String como tipo para a expressão.
  • Fall-Through: Se você não usar o break, o código continuará a executar o próximo bloco case, independentemente de a condição do próximo bloco ser verdadeira ou não.
  • default: Não é obrigatório, mas é uma boa prática incluí-lo para tratar casos inesperados.

O switch oferece uma forma mais limpa e eficiente de lidar com múltiplas condições baseadas em um único valor.