CREIO eu que essa parte da API responde sua pergunta
The String class represents character strings. All string literals in Java programs, such as “abc”, are implemented as instances of this class.
Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.
Se estiver equivocado, podem me corrigir ou acrescentar algo.
Higashi
Eu acho que não me expressei direito ali em cima e não deu pra entender nada…
vou se mais especifico…
Como uma String é imutavel e se usa operadores “+” para concatenão e não uma StringBuffer
a JVM cria objetos temporários na memória e a substring tambem retorna um objeto com o valor
especificado.
Então cria-se um objeto quando se cria a String, quando se concatena e quando se usa a substring
ganondorfan
Tem certeza que a resposta é 3?
Se eu tivesse que optar, eu optaria por 4.
Cosmolense
A resposta é a C mesmo
“Fred” e “47” são criadas no pool de Strings quado a classe é carregada.
É criada uma nova string Fred47 em
s = s + “47”;
É criada uma segunda string ed4 em
s = s.substring(2, 5);
É criada uma terceira string ED4 em
s = s.toUpperCase();
Portanto, são criadas três strings.
Acho que tem alguns tópicos discutindo essa mesma questão por aí