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
- switch no Estilo de Seta
- switch como Expressão
- A Palavra-chave yield
- Casos com Vários Rótulos