Quantos objetos String serão cr, comidos

Tenho o seguinte código Java:

public String makinStrings() {
  String s = "Fred";
  s = s + "47";
  s = s.substring(2, 5);
  s = s.toUpperCase();
  return s.toString();
}

A questão é de alguma forma simples: quantasString objetos serão criados quando esse método for chamado?

No começo, eu respondi que 5 objetos String foram criados, mas a resposta do meu livro diz que apenas 3 objetos são criados e nenhuma explicação foi dada (esta é uma pergunta do SCJP

Do meu ponto de vista, existem 5 objetos: "Fred", "47", "Fred47", "ed4", "ED4".

ambém encontrei esta pergunta em um exame de simulação SCJP, com a mesma resposta 3.

questionAnswers(3)

yourAnswerToTheQuestion