Opa, isso é um operador ternário ele funciona assim:
A primeira parte (hora <= 9) é um valor booleano.
Logo em seguida coloca-se o sinal de interrogação (?) que é o operador ternário.
A segunda parte (“0” + hora) é a primeira condição, que será executada caso o valor booleano seja verdadeiro.
Depois se usa os dois pontos ( : ) para separar as condições.
A a terceira parte (hora + “”) é a segunda condição ,que será executada caso o valor booleano seja falso.
Aqui vai um código de exemplo:
int valorUm = 10;
int valorDois = 5;
String valorFinal = valorUm > valorDois ? "Primeiro Valor é o maior" : "Segundo valor é o maior";
System.out.println(valorFinal);