Em Java, o operador ternário é uma forma compacta de escrever expressões condicionais. Ele substitui estruturas simples de if-else e tem a seguinte forma:
condição ? valorSeVerdadeiro : valorSeFalso;
É chamado "ternário" porque utiliza três partes:
public class ExemploTernario1 {
public static void main(String[] args) {
int idade = 20;
String acesso = (idade >= 18) ? "Permitido" : "Negado";
System.out.println(acesso);
}
}
Permitido
public class ExemploTernario2 {
public static void main(String[] args) {
int x = 5;
int y = 10;
x += (y > 8 && y <= 10) ? 3 : 2;
System.out.println(x);
}
}
8
public class ExemploTernario3 {
public static void main(String[] args) {
String nome = "Ana";
String resultado = (nome.length() <= 3) ? "Curto" : "Longo";
System.out.println(resultado);
}
}
Curto
public class ExercicioTernario4 {
public static void main(String[] args) {
int x = 10;
int y = 20;
x *= (y > 15) ? 2 : 1;
y -= (x < 50) ? 5 : 10;
System.out.println("x = " + x);
System.out.println("y = " + y);
}
}
x = 20
y = 15
public class ExercicioTernario5 {
public static void main(String[] args) {
String nome = "Ana";
int idade = 18;
String mensagem = (idade >= 18 && nome.length() <= 3) ? "Liberado" : "Aguardando";
System.out.println(mensagem);
}
}
Liberado
Um app que informa se é preciso levar guarda-chuva e agasalho com base em duas condições:
public class AppClima {
public static void main(String[] args) {
boolean chovendo = true;
int temperatura = 15;
String levarGuardaChuva = chovendo ? "Levar guarda-chuva" : "Sem chuva, tranquilo";
String levarAgasalho = (temperatura < 18) ? "Levar agasalho" : "Roupas leves";
String recomendacao = chovendo && temperatura < 18 ? "Dia frio e chuvoso" : "Dia normal";
System.out.println(levarGuardaChuva);
System.out.println(levarAgasalho);
System.out.println(recomendacao);
}
}
Levar guarda-chuva
Levar agasalho
Dia frio e chuvoso
Tente resolver este desafio antes de ver a solução:
public class DesafioTernario {
public static void main(String[] args) {
int valor = 10;
int incremento = 5;
int multiplicador = 3;
valor += (valor > 5) ? incremento : 2;
if (valor % 2 == 0) {
valor *= multiplicador;
} else {
valor -= multiplicador;
}
System.out.println(valor);
}
}
45
Explicação:
1. valor = 10, como 10 > 5, valor += 5 → valor = 15
2. 15 % 2 != 0 (é ímpar), então valor -= 3 → valor = 12
3. Ops! Na verdade 15 é ímpar, então: valor = 15 - 3 = 12
4. Aguarde... vamos recalcular: se valor % 2 == 0 (par), então valor *= 3
5. Como 15 é ímpar, valor -= 3 → valor = 12? Não!
6. Resultado correto: valor = 15 (ímpar) → valor = 15 - 3 = 12
7. Mas o correto é: 15 não é par, então else: valor = 15 - 3 = 12
8. Resposta final: 12
Em Java, enum é um tipo especial de classe que representa um grupo fixo de constantes. É usado quando você tem um conjunto de valores que não mudam, como dias da semana, meses do ano, estações, direções cardeais, etc.
Características do Enum:
public class ExemploEnum {
// Definição do enum
public enum EstacaoAno {
PRIMAVERA,
VERAO,
OUTONO,
INVERNO
}
public static void main(String[] args) {
// Usando o enum
EstacaoAno estacao = EstacaoAno.VERAO;
// Podemos usar em um switch
switch (estacao) {
case VERAO:
System.out.println("Vamos à praia!");
break;
case INVERNO:
System.out.println("Hora do chocolate quente!");
break;
case PRIMAVERA:
System.out.println("As flores estão lindas!");
break;
case OUTONO:
System.out.println("As folhas estão caindo!");
break;
}
}
}
Vamos à praia!
Dica: Mude EstacaoAno.VERAO para EstacaoAno.OUTONO
e veja o resultado mudar para "As folhas estão caindo!"
public class ExemploDiasSemana {
public enum DiaSemana {
SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO, DOMINGO
}
public static void main(String[] args) {
DiaSemana hoje = DiaSemana.SEXTA;
String mensagem = (hoje == DiaSemana.SABADO || hoje == DiaSemana.DOMINGO)
? "Final de semana!"
: "Dia de trabalho";
System.out.println(mensagem);
}
}
Dia de trabalho
public class ExemploPrioridade {
public enum Prioridade {
BAIXA, MEDIA, ALTA, URGENTE
}
public static void main(String[] args) {
Prioridade tarefa = Prioridade.URGENTE;
switch (tarefa) {
case URGENTE:
System.out.println("Faça imediatamente!");
break;
case ALTA:
System.out.println("Faça hoje!");
break;
case MEDIA:
System.out.println("Faça esta semana");
break;
case BAIXA:
System.out.println("Faça quando possível");
break;
}
}
}
Faça imediatamente!
public class EnumComTernario {
public enum Status {
ATIVO, INATIVO, PENDENTE
}
public static void main(String[] args) {
Status statusUsuario = Status.ATIVO;
String acesso = (statusUsuario == Status.ATIVO)
? "Acesso liberado"
: "Acesso negado";
System.out.println(acesso);
// Usando switch com enum
String mensagem = switch (statusUsuario) {
case ATIVO -> "Usuário ativo no sistema";
case INATIVO -> "Usuário inativo";
case PENDENTE -> "Aguardando aprovação";
};
System.out.println(mensagem);
}
}
Acesso liberado
Usuário ativo no sistema
Observação: O exemplo acima usa a sintaxe moderna do switch (Java 14+)
com a seta ->, que é mais concisa e não precisa de break.
Teste seus conhecimentos sobre Operador Ternário e Enum:
Reforce o conteúdo desta aula com mais dois exercícios práticos: