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.
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.
int nota = 8;
String result = nota >= 7 ? "aprovado" : "reprovado";
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".
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:
se (senhaBanco é igual null, sim, então senha é igual null, senão senhaBanco é igual senha) {
(…)
}
O que?
O NetBeans está tirando conclusões sozinho?
Criou AI do nada?
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.