Esse construto é chamado Operador Ternário de Ciência da Computação e técnicas de Programação.
E a Wikipedia sugere a seguinte explicação:
Na ciência da computação, um operador ternário (às vezes chamado incorretamente de operador terciário) é um operador que recebe três argumentos. Os argumentos e o resultado podem ser de tipos diferentes. Muitas linguagens de programação que usam sintaxe do tipo C apresentam um operador ternário,?:, Que define uma expressão condicional.
Não apenas em Java, esta sintaxe também está disponível no PHP, Objective-C.
No link a seguir , fornece a seguinte explicação, que é muito boa de entender:
Um operador ternário é uma operação que opera em 3 entradas. É um atalho para uma instrução if-else e também é conhecido como um operador condicional.
No Perl / PHP, ele funciona como:
boolean_condition ? true_value : false_value
Em C / C ++, ele funciona como:
logical expression ? action for true : action for false
Isso pode ser legível para algumas condições lógicas que não são muito complexas, caso contrário, é melhor usar o bloco If-Else com a combinação pretendida de lógica condicional.
Podemos simplificar os blocos If-Else com este operador Ternary para uma linha de instrução de código.
Por exemplo:
if ( car.isStarted() ) {
car.goForward();
} else {
car.startTheEngine();
}
Pode ser igual ao seguinte:
( car.isStarted() ) ? car.goForward() : car.startTheEngine();
Portanto, se nos referirmos à sua declaração:
int count = isHere ? getHereCount(index) : getAwayCount(index);
Na verdade, é o equivalente a 100% do seguinte bloco If-Else :
int count;
if (isHere) {
count = getHereCount(index);
} else {
count = getAwayCount(index);
}
É isso aí!
Espero que isso tenha sido útil para alguém!
Felicidades!