Operador Ternário
O operador condicional, ? :, conhecido como operador ternário, é apenas um operador que tem três operandos:
expressaoBoolean ? expressão1 : expressão2
O primeiro operando precisa ser uma expressão booleana, e o segundo e terceiro pode ser qualquer expressão que retorne um valor.
A operação ternária é na verdade uma forma condensada da declaração if-else que retorna um valor. Esses dois códigos são equivalentes:
A seguir um código equivalente:
Veja que muitas vezes ajuda para a legibilidade adicionar parênteses em torno das expressões nas operações ternárias, mas não é necessário.
Não é necessário que a segunda e terceira expressão ternária tenha o mesmo tipo de dados, mas deve combinar com os outros operadores. Veja as seguintes duas declarações:
Ambas expressões têm valores booleanos similares e retorna um int e uma String, contudo somente a primeira linha compila.
O System.out.println() não importa se a declaração são tipos completamente diferente, porque ambos podem ser convertidos para String.
Contudo, o compilador sabe que “Cavalo” é um tipo de dado errado para atribuir ao int, por isso, a compilação não acontece.
Avaliação de Expressões Ternária
Apenas a expressão a direita da operação ternária será avaliada em tempo de execução. Similar ao operador short-circuit, pode acontecer que uma das duas expressões da direita ser executada, isso não é aplicado em tempo de execução. Exemplo:
Veja que a expressão a esquerda foi verdadeira, apenas y foi incrementado. Vamos inverter a situação:
Veja que a expressão a esquerda foi falsa, apenas z foi incrementado.
Dessa maneira, vimos que a expressão ternária pode executar apenas uma expressão particular.
Fonte: OCA – Oracle Certified Associate Java SE 8 Programmer I – Study Guide
Deixe um comentário