Oi Rafael, tudo bem?
As duas afirmações estão corretas. :-)
O Java só coloca no pool as Strings criadas utilizando literal. Mas uma questão que pode ocorrer na prova, é perguntando quantos objetos do tipo String foram criados em um determinado trecho de código.
No caso do trecho que você citou, são criados dois objetos.
Perceba que utilizamos passamos um literal("hello "
) para o construtor da classe String
. Nesse caso é criado um novo objeto que é colocado no pool.
Um segundo objeto também será criado a partir desse literal, pois utilizamos o operador new
. Esse objeto não é colocado no pool.
Para resumir, nessa linha, dois objetos são criados, mas apenas um vai para o pool, que é o literal "hello "
.
Faz sentido? Se a dúvida persistir é só avisar.
Um abraço.