Operador condicional ternário

Ola Pessoal!

Alguém pode me dizer o que é esse conceito em JAVA -> operador condicional ternário(ternary operator)?

Desde já agradeço.

1 curtida

é uma forma compacta de realizar um if-else
a sintaxe seria:
para a expressão:

if (a > 0)
   b = 1;
else
   b = 2;

com o ternário ficaria:

 b = (a > 0) ? 1 : 2;

a sintaxe é: (Expressão) ? ValorTrue : ValorFalse

6 curtidas

É um operador semelhante a um if/else, por exemplo:

? <retorno caso condição true> :

System.out.println(1 == 1 ? "Verdadeiro" : "False");

Com if else:

if(1 == 1)
  System.out.println("Verdadeiro")
else
  System.out.println("Falso")

[]'s

1 curtida

o operador ternario é uma forma de você colocar uma condição no seu código, acho que te mostrando um exemplo é mais facil de explicar.

int valorA = 1;
int result = (valorA == 1)?3:2;

condição = (valorA == 1)
? = indica o final da condição.
3 = valor se a condição for verdadeira.
: = separação do valor verdadeiro e do valor falso.
2 = valor para a condição falsa.

neste exemplo result receberá 3.

2 curtidas

.

Boa tarde…desculpem ressuscitar um tópico antigo…mas já que o assunto já havia sido mencionado preferi postar minha dúvida aqui mesmo.

No caso de eu ter um condição mais complexa? Ficaria como?

Exemplo void contemFuncionario(Funcionario f){ for (Funcionario y : empregados) { System.out.println((y.nome == f) ? "Esta pessoa eh funcionária" : "Esta pessoa não é funcionária"); }
O exemplo acima está errado, claro, pq não posso converter boolean pra string.
Eu queria apenas pegar o nome de um funcionário meu em um array e comparar com um nome que eu passar para este método e saber se este funcionário está ou não no meu array.

Obrigado!

No seu caso, seria algo mais ou menos assim:

            System.out.println(
                y.nome.equals (f.getNome()) ? 
                   "Esta pessoa eh funcionária"
                   : "Esta pessoa não é funcionária");  

acho um topico bacana pra deixar fixo alguns operadores isso ajuda muito por exemplo o proprio

for (Funcionario y : empregados)

muita gente nao intende bem como funciona

Tenta isso… Lembrando que Strings nao devem ser comparadas com == a menos que queira saber se apontam para o mesmo Objeto…

void contemFuncionario(Funcionario f){ for (Funcionario y : empregados) { System.out.println((y.nome.equals(f.nome)) ? "Esta pessoa eh funcionária" : "Esta pessoa não é funcionária"); }

Abs :wink:

[quote=adriano_si]Tenta isso… Lembrando que Strings nao devem ser comparadas com == a menos que queira saber se apontam para o mesmo Objeto…

void contemFuncionario(Funcionario f){ for (Funcionario y : empregados) { System.out.println((y.nome.equals(f.nome)) ? "Esta pessoa eh funcionária" : "Esta pessoa não é funcionária"); }

Abs ;)[/quote]
Valeu adriano!!
Funcionou direitinho!!
do seu jeito ficou mais elegante do que usar y.nome==f.nome ehheh

[]s

[quote=FernandoSChaves][quote=adriano_si]Tenta isso… Lembrando que Strings nao devem ser comparadas com == a menos que queira saber se apontam para o mesmo Objeto…

void contemFuncionario(Funcionario f){ for (Funcionario y : empregados) { System.out.println((y.nome.equals(f.nome)) ? "Esta pessoa eh funcionária" : "Esta pessoa não é funcionária"); }

Abs ;)[/quote]
Valeu adriano!!
Funcionou direitinho!!
do seu jeito ficou mais elegante do que usar y.nome==f.nome ehheh

[]s[/quote]

fernando mas serio nao usa f nem y usa nomes melhores neh?

[quote=guialeixo]

fernando mas serio nao usa f nem y usa nomes melhores neh?[/quote]

ehhhe Esse exemplo era apenas para meus estudos :smiley:
Acabei ficando preguiçoso e não usei as convenções de código. Vou melhorar isso :wink:
vlw!

[quote=FernandoSChaves][quote=adriano_si]Tenta isso… Lembrando que Strings nao devem ser comparadas com == a menos que queira saber se apontam para o mesmo Objeto…

void contemFuncionario(Funcionario f){ for (Funcionario y : empregados) { System.out.println((y.nome.equals(f.nome)) ? "Esta pessoa eh funcionária" : "Esta pessoa não é funcionária"); }

Abs ;)[/quote]
Valeu adriano!!
Funcionou direitinho!!
do seu jeito ficou mais elegante do que usar y.nome==f.nome ehheh

[]s[/quote]

Cara… a questao nao eh a elegancia e sim a utilidade do metodo equals(), sempre compare valores por ele (principalmente Strings)… Exemplo


String s1 = "ADRIANO";
String s2 = "ADRIANO";
System.out.println(s1==s2); // Por sorte sua, aqui e somente aqui esse valor eh true

Jah aqui…

String s1 = "ADRIANO";
String s2 = new String("ADRIANO");
System.out.println(s1==s2);          // FALSE
System.out.println(s1.equals(s2)); // TRUE

Deixo pra voce descobrir o porque disso…

Att.

Sempre use equals() para comparar valores de Strings

Opa Adriano!
Valeu pelas dicas!

No caso de eu usar o == eu estaria comparando as áreas da memória ao invés do conteúdo, correto?
E no .equals, eu estaria comparando o conteúdo ao invés da área de memória alocada…é isso mesmo ou escrevi bobagem?

Abraço!

De modo geral:

Você só é “==” a você mesmo.
Você pode ser “equals” a seu irmão gêmeo.

Desculpem o spam de dúvidas…

Outra coisa pessoal…

em um if ternário eu posso usar um break caso minha condição seja verdadeira ou falsa?
[]s

Um operador condicional ternário é uma expressão (composta de 3 expressões: a condição, a expressão a ser calculada se a condição for verdadeira, e a expressão a ser calculada se a condição for falsa), e um “break” ou “continue” não é uma expressão e sim um comando.