Isso se chama operador ternário, funciona como um if … else.
Você usa ele assim
Condição? se verdadeiro : se falso;
Você usa uma condição antes do ‘?’ e caso seja verdadeiro você coloca o resultado q quer retornar antes do ‘:’ , se for falso você coloca o resultado q quer retornar depois do ‘:’ .
Não sei se ficou claro, mas qualquer coisa pergunta ae.
romarcio
Olá,
esse tipo de teste é chamado de ternário, ou operador ternário. Ele substitui o if/else onde teriamos uma expressão if/then/else. Porém, ele só funciona se a operação tiver um retorno.
No exemplo acima o código nota > 7 seria o if, então, se nota > 7. O ? é o then (então) então retorne "aprovado". E o : é o else, senão retorno "reprovado".
B
brunokchimbo
Senhores, agradeço as explicações, mas eu já havia entendido. O que eu não consigo entender é o que está acontecendo neste código que eu postei, que por sinal foi gerado pelo próprio NetBeans após eu fazer o seguinte:
if (senhaBanco == senha) { return true; }
Segundo a lógica… o que o NetBeans fez foi o seguinte:
O que?
O NetBeans está tirando conclusões sozinho?
Criou AI do nada?
igomes
Cara mais fácil vc falar a comparação que quer fazer
B
brunokchimbo
Eu só quero entender porque o NetBeans substituiu meu if por este que postei, se não é a comparação que quero fazer.
Solucao aceita
pmlm2 likes
Assumindo que senhaBanco e senha são Strings, então não devem ser comparadas com ==, que ter irá retornar sempre falso a não ser que seja o mesmo objecto (e não a mesma String).
O que o IDE terá feito foi perceber que estavas a comparar String com == e substituir pela regra certa para isso:
se senhaBanco e senha são ambos null então devolve true (são iguais). Se não, compara as strings com o método equals, que é o que deves usar SEMPRE que queres comparar objetos do tipo String.
B
brunokchimbo
Aaaaaaaaahhh!
Agora tudo faz sentido. Realmente era só questão de interpretação.
Vlw mesmo!
Ivan_Matuck
Eu fiz o exercício da apostila FJ-11, da caelum, com os modos if/else e operador ternário, para comparação.
publicclassFuncionario{// variáveis private: de uso restrito dentro da classeprivateintsenha;// método autentica com if/elsepublicbooleanautentica(intsenha){if(this.senha==senha){System.out.println("Acessos Permitido!");returntrue;}else{System.out.println("Acesso Negado!");returnfalse;}}// método autentica com operador ternáriopublicvoidautentica2(intsenha){System.out.println((this.senha==senha)?"Acesso Permitido":"Acesso Negado");}}