Cuántos objetos de cadena serán cr, comidos

Tengo el siguiente código Java:

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

a pregunta es sencilla: ¿cuántasStringSe crearán @ objetos cuando se invoque este método?

l principio, respondí que se crean 5 objetos de cadena, pero la respuesta de mi libro dice que solo se crean 3 objetos y no se dio ninguna explicación (esta es una pregunta SCJP).

Desde mi punto de vista hay 5 objetos: "Fred", "47", "Fred47", "ed4", "ED4".

También encontré esta pregunta en un examen de simulación SCJP, con la misma respuesta 3.

Respuestas a la pregunta(3)

Su respuesta a la pregunta