Veja : um usuário pode não ter feito nenhum lance , ou, ter feito pelo menos algum lance. Se o usuário fez algum lance , ele fez ou 1 (um) ou 2 (dois) ou 3 (três), ou 4 (quatro) ou 5 (cinco) , e no máximo 5 (cinco), lances, ok ?
No caso do usuário ter feito pelo menos algum lance, então, quando buscamos o último lance desse usuário na lista de lances do leilão, haverá um lance desse usuário nos lances que NÃO É NULL. Reciprocamente, se buscamos o último lance do usuário nos lances do leilão e encontramos algum lance que NÃO É NULL então o usuário fez pelo menos algum lance. Entende?No caso do usuário NÃO ter feito nenhum lance, então, quando buscamos o último lance desse usuário na lista de lances do leilão, NÃO HAVERÁ nenhum lance desse usuário nos lances. Reciprocamente, se buscamos o último lance do usuário nos lances do leilão e não encontrarmos nada, se for nula nossa busca, então o usuário não fez ainda nenhum lance. Entende? Por isso a variável Lance ultimo foi inicializada com null, pois se após se buscar o último lance do usuário a variável ultimo ainda for igual a null significará que o usuário ainda não tinha dado nenhum lance, entende ?