Pergunta sobre Strings

13 respostas
marciorodr0

public String makinStrings() { String s = "Fred"; s = s + "47"; s = s.substring(2, 5); s = s.toUpperCase(); return s.toString(); } // How many String objects will be created when this method is invoked? // A. 1 // B. 2 // C. 3 // D. 4 // E. 5 // F. 6 // Answer: C

Se Strings são imutáveis, qual a explicação para a resposta ser C apenas 3… eu contei ai pelo menos 5 Strings…

Alguém sabe??

[]'s

13 Respostas

felipemartinsss

A variável s começa referenciando a String “Fred”.
Depois, é criada uma String “Fred47” e s começa a referenciá-la.
O método substring não cria uma String nova, apenas retorna um intervalo de caracteres de uma String já existente.
O método toUpperCase() altera uma String existente, logo, é criada outra String.
return s.toString() não tem efeito de criação pois s já é uma String.
Entendo que seja isso.

^^

marciorodr0

Mas e essa String “47”, ela não é criada tb?

phpinheiro

Pela pergunta, devemos ver quantos objetos de string na memória foram criados.

Eu vejo os tres:

“fred” - “47” - s.toUpperCase()

felipemartinsss

Hum, acredito que não.
Mas, mas não tenho certeza.

:roll:

marciorodr0

Bom essa questão não deve estar levando em conta o pool de constantes String… sei lá tb… Mas faz sentido sua resposta felipemartinsss, valeu!

G

Creio que o felipemartinsss esta correto.

rafaelsantos1983

Cara tá estranho ser 3.

Alterar uma String? String num é imutável?

É os objetos: s + “47” e s.substring(2, 5)

na API diz:
substring(int, int)->Returns a new string that is a substring of this string.

E a soma de duas String, gera uma nova String.

Pensando no pool de String, nao consigo achar que sejam 3. Pq no pool ter’a
"Fred", Fred47, “ed4”, “ED4”

ViniGodoy

É sim, mas por não ser atribuida a nada, será retirada do pool.

marciorodr0

ViniGodoy, então, essa pergunta está bastante nebulosa rsrs, típico… Neste caso ele levou em conta apenas as que permanerecem no Pool… Creio que seja isso…

Marcio_Nogueira

3 objetos em mamória:
Fred
47
Fred47
:wink:

phpinheiro

é…acho que é o que o Márcio Nogueira falou mesmo…

Talvez aqui ajude um pouco:

http://www.guj.com.br/java.tutorial.artigo.103.1.guj

ViniGodoy

Parte da dificuldade dessas provas está em descobrir o quão idiota o cara que elaborou a pergunta é.

C
Criado 23 de janeiro de 2009
Ultima resposta 24 de jan. de 2009
Respostas 13
Participantes 8