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:
intvalorUm=10;intvalorDois=5;StringvalorFinal=valorUm>valorDois?"Primeiro Valor é o maior":"Segundo valor é o maior";System.out.println(valorFinal);