0Pricing
Java Academy · Aula

switch como Expressão

Retorne valores de switch

switch como Expressão é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.

Instruções versus expressões

Uma instrução executa uma ação. Uma expressão produz um valor. O Java moderno permite que switch seja uma expressão, para que você possa atribuir diretamente o resultado a uma variável.

Atribuindo o resultado de uma seleção por casos

Quando switch aparece no lado direito de =, cada ramo fornece o valor. A forma com seta retorna automaticamente o valor que vem depois de ->.

public class Main {
    public static void main(String[] args) {
        int day = 6;
        String type = switch (day) {
            case 6, 7 -> "Weekend";
            default -> "Weekday";
        };
        System.out.println(type);
    }
}

Ponto e vírgula após o bloco

Como uma expressão switch faz parte de uma instrução, ela termina com um ponto e vírgula após a chave de fechamento. Esquecê-lo é um erro comum de compilação.

public class Main {
    public static void main(String[] args) {
        int n = 2;
        int doubled = switch (n) {
            case 1 -> 2;
            case 2 -> 4;
            default -> 0;
        };
        System.out.println(doubled);
    }
}

Exaustividade

Uma expressão switch deve abranger todos os valores possíveis. Para a maioria dos tipos, isso significa incluir um ramo default; caso contrário, o código não será compilado.

public class Main {
    public static void main(String[] args) {
        int score = 85;
        char grade = switch (score / 10) {
            case 10, 9 -> 'A';
            case 8 -> 'B';
            case 7 -> 'C';
            default -> 'F';
        };
        System.out.println(grade);
    }
}

Enumerações não precisam de ramo padrão

Ao fazer uma seleção sobre uma enum e cobrir todas as constantes, o compilador sabe que ela é exaustiva. Um ramo default se torna opcional.

public class Main {
    enum Dir { NORTH, SOUTH, EAST, WEST }
    public static void main(String[] args) {
        Dir d = Dir.EAST;
        String label = switch (d) {
            case NORTH -> "Up";
            case SOUTH -> "Down";
            case EAST -> "Right";
            case WEST -> "Left";
        };
        System.out.println(label);
    }
}

Retornando diretamente

Um método pode return diretamente uma expressão switch, permitindo criar métodos de consulta concisos.

public class Main {
    static int sides(String shape) {
        return switch (shape) {
            case "triangle" -> 3;
            case "square" -> 4;
            case "pentagon" -> 5;
            default -> 0;
        };
    }
    public static void main(String[] args) {
        System.out.println(sides("square"));
    }
}

Resultados numéricos

Os ramos podem retornar números, realizar operações aritméticas ou chamar métodos. Cada ramo deve produzir um valor do mesmo tipo da variável à qual ele é atribuído.

public class Main {
    public static void main(String[] args) {
        int month = 2;
        int days = switch (month) {
            case 2 -> 28;
            case 4, 6, 9, 11 -> 30;
            default -> 31;
        };
        System.out.println("Days: " + days);
    }
}

Usando o resultado diretamente

O valor de uma expressão switch pode ser usado imediatamente, por exemplo, dentro de uma chamada a println.

public class Main {
    public static void main(String[] args) {
        int code = 1;
        System.out.println("Status: " + switch (code) {
            case 0 -> "OK";
            case 1 -> "Warning";
            default -> "Error";
        });
    }
}

Consistência de tipos

Todos os ramos devem concordar quanto ao tipo do resultado. Se um ramo retornar um int e outro um String, o código não será compilado. Mantenha os ramos consistentes.

public class Main {
    public static void main(String[] args) {
        int n = 3;
        double factor = switch (n) {
            case 1 -> 0.5;
            case 2 -> 1.0;
            default -> 1.5;
        };
        System.out.println(factor);
    }
}

Substituindo cadeias de operadores ternários

Uma expressão switch costuma ser mais clara do que operadores ternários aninhados ao transformar um valor em vários resultados.

public class Main {
    public static void main(String[] args) {
        int rating = 4;
        String stars = switch (rating) {
            case 1 -> "*";
            case 2 -> "**";
            case 3 -> "***";
            case 4 -> "****";
            default -> "*****";
        };
        System.out.println(stars);
    }
}

Combinando com variáveis

Você pode usar o resultado de uma expressão switch em cálculos adicionais, assim como qualquer outro valor.

public class Main {
    public static void main(String[] args) {
        int tier = 2;
        int discount = switch (tier) {
            case 1 -> 5;
            case 2 -> 10;
            default -> 0;
        };
        int price = 100 - discount;
        System.out.println("Price: " + price);
    }
}

Verificação rápida

Por que uma expressão switch geralmente precisa incluir um ramo default?

Recapitulação

Você aprendeu a usar switch como expressão:

  • Ela produz um valor que pode ser atribuído ou retornado
  • Encerre a atribuição com um ponto e vírgula
  • Ela deve ser exaustiva (geralmente precisa de default)
  • Enumerações que cobrem todas as constantes não precisam de default
  • Todos os ramos devem compartilhar o mesmo tipo de resultado

Perguntas Frequentes

A aula “switch como Expressão” é grátis?

Sim — o texto completo de “switch como Expressão” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.

O que vou aprender em “switch como Expressão”?

Retorne valores de switch Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Java Academy?

Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “switch como Expressão”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Java Academy?

Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. switch no Estilo de Seta
  2. switch como Expressão
  3. A Palavra-chave yield
  4. Casos com Vários Rótulos
← Voltar para Java Academy