Question 91
Given:
11. public String makinStrings() {
12. String s = ?Fred?;
13. s = s + ?47?;
14. s = s.substring(2, 5);
15. s = s.toUpperCase();
16. return s.toString();
17. }
How many String objects will be created when this method is invoked?
A. 1
B. 2
C. 3
D. 4
E. 5
F. 6
Pessoal segundo o TestKiller a resposta certa eh a C.
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.
public String makinStrings() {
//cria um objeto String com o valor "Fred" e aponta para a variavel de referencia s
String s = "Fred";
//cria um objeto String com o valor "47"
//cria um objeto String com o valor "Fred47" e aponta para a variavel de referencia s
s = s + "47";
//nao cria objeto, apenas retorna para variavel s os caracteres "ed4"
s = s.substring(2, 5);
//nao cria um objeto, apenas retorna para variavel s os caracteres "ED4" (em caixa alta)
s = s.toUpperCase();
//não cria um objeto, apenas retorna o valor de s
return s.toString();
}
Se estiver equivocado, podem me corrigir ou acrescentar algo.
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