Este constructo se llama Operador ternario en informática y técnicas de programación.
Y Wikipedia sugiere la siguiente explicación:
En informática, un operador ternario (a veces llamado incorrectamente un operador terciario) es un operador que toma tres argumentos. Los argumentos y el resultado pueden ser de diferentes tipos. Muchos lenguajes de programación que usan sintaxis tipo C presentan un operador ternario,?:, Que define una expresión condicional.
No solo en Java, esta sintaxis está disponible en PHP, Objective-C también.
En el siguiente enlace da la siguiente explicación, lo cual es bastante bueno para entenderlo:
Un operador ternario es una operación que opera en 3 entradas. Es un acceso directo para una instrucción if-else, y también se conoce como operador condicional.
En Perl / PHP funciona como:
boolean_condition ? true_value : false_value
En C / C ++ funciona como:
logical expression ? action for true : action for false
Esto podría ser legible para algunas condiciones lógicas que no son demasiado complejas, de lo contrario es mejor usar el bloque If-Else con la combinación prevista de lógica condicional.
Podemos simplificar los bloques If-Else con este operador ternario para una línea de instrucción de código.
Por ejemplo:
if ( car.isStarted() ) {
car.goForward();
} else {
car.startTheEngine();
}
Podría ser igual a lo siguiente:
( car.isStarted() ) ? car.goForward() : car.startTheEngine();
Entonces, si nos referimos a su declaración:
int count = isHere ? getHereCount(index) : getAwayCount(index);
En realidad, es el 100% equivalente del siguiente bloque If-Else :
int count;
if (isHere) {
count = getHereCount(index);
} else {
count = getAwayCount(index);
}
¡Eso es!
¡Espero que esto haya sido útil para alguien!
¡Salud!