📊 Capítulo 02: Estruturas Condicionais & Switch Moderno
Especialização em Sistemas com Java
🗺️ A Evolução do Switch: Switch Tradicional vs Switch Expressions
flowchart TD
subgraph VELHO ["Switch Legado (Propenso a Bugs)"]
S1["switch (dia) {\n case 1: nome = 'Dom'; break;\n case 2: nome = 'Seg';\n // Esquecer o 'break' causa bug de Fall-through catastrófico! 🚨\n}"]
end
subgraph NOVO ["Switch Expressions do Java 21 (Seguro e Expressivo)"]
S2["String nome = switch (dia) {\n case 1 -> 'Domingo';\n case 2, 3, 4, 5, 6 -> 'Dia Útil';\n case 7 -> 'Sábado';\n default -> throw new IllegalArgumentException();\n}; (Zero Fall-through / Retorna valor diretamente!) ⚡"]
end
style VELHO fill:#ffebee,stroke:#d32f2f,stroke-width:2px
style NOVO fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎯 Slide 1: Estruturas if / else if / else
- Operadores relacionais (
==,!=,<,>,<=,>=). - Operadores lógicos de curto-circuito (
&&,||,!). - Curto-Circuito: Se o primeiro operando de
&&for falso, o segundo nunca é executado, prevenindoNullPointerExceptionem verificações comoif (obj != null && obj.isValid()).
🎯 Slide 2: Operador Ternário Expressivo
double preco = 120.0;
double desconto = (preco > 100.0) ? preco * 0.1 : preco * 0.05;
- Útil para atribuições condicionais concisas e imutáveis sem múltiplos blocos
if/else.
🎯 Slide 3: Pattern Matching para switch no Java 21
static String formatar(Object obj) {
return switch (obj) {
case Integer i -> String.format("Número inteiro: %d", i);
case Long l -> String.format("Número longo: %d", l);
case String s -> String.format("Texto: %s", s.toUpperCase());
case null -> "Valor nulo tratado com segurança!";
default -> obj.toString();
};
}
🔗 Navegação do Capítulo 02
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim