estou lendo o livro e surgiu uma duvido, e resolvi recorrer à vocês. Seguinte: No capitulo 6, mais especificamente na página 241 tenho o seguinte código:
Entendi que os Strings são imutáveis e quando se perde referência ao objeto String. Mas minha duvida esta na quantidade de objetos String criados neste momento.
Resposta dela:
O seguinte código cria um objeto “summer” (perdido) e “spring summer” ou somente cria “spring summer”?
Strings2=s1+"summer ";
Se o anterior for verdade, por que este código não cria outro objeto String?
System.out.println(s1+" "+s2);
aiaiai…
estou confuso
espero ter conseguido passar a duvida…
obrigado pessoal
[]'s
e ae Marcos, blz?? Na saída do programa não são criados novos objetos string. Ele apenas coloca na saída padrão os objetos string existentes na memória. Blz? Abraços e bons estudos.
evertonsilvagomesjav
Galera mas e quanto as “string no pool de string”, daí nao seria oito objetos criados não seria?
V
vmsb11
sim, seria 8 objetos criados…
evertonsilvagomesjav
vmbs e quanto ao pool de strings?
ViniGodoy
Pois é, aquele código realmente deveria ter criado outro String. O livro inclui ele na contagem?
evertonsilvagomesjav
Vini sao oito String mesmo?
Isso aqui nao entra no pool nao?
ViniGodoy
Eu contei 10.
Strings1="spring ";//1. "spring " entra no pool Strings2=s1+"summer ";//2 e 3. É criado "summer" e "spring summer". "summer " entra no pool s1.concat("fall ");//4 e 5. é criado "fall " e "spring fall ". "fall " entra no pool.s2.concat(s1);//6. é criado "spring summer spring "s1+="winter ";//7 e 8. é criado "winter" e "spring winter ". "winter " entra no poolSystem.out.println(s1+" "+s2);// 9 e 10. É criado " " e "spring winter spring summer". " " entra no pool
O mais provável é que a explicação do livro não leve em conta a linha do println.
evertonsilvagomesjav
Vini uma duvida, as strings no pool como por exemplo:
isso ai nao é criado um objeto nao é?
ViniGodoy
Se ela já estiver no pool, não. Se não estiver ainda, aí um objeto é criado sim.
String x = "spring";
String y = "spring";
O A primeira linha cria um objeto String, contendo o texto spring. A segunda, só usa o objeto já criado acima.
evertonsilvagomesjav
Ahh ok, vlw Vini.
evertonsilvagomesjav
Mas sendo assim o livro ta errado entao, num ta nao? Pq pela explicaçao clara que vc deu eu entendi tb que sao 10 entao n?
marcosvidolin
ViniGodoy:
Eu contei 10.
Strings1="spring ";//1. "spring " entra no pool Strings2=s1+"summer ";//2 e 3. É criado "summer" e "spring summer". "summer " entra no pool s1.concat("fall ");//4 e 5. é criado "fall " e "spring fall ". "fall " entra no pool.s2.concat(s1);//6. é criado "spring summer spring "s1+="winter ";//7 e 8. é criado "winter" e "spring winter ". "winter " entra no poolSystem.out.println(s1+" "+s2);// 9 e 10. É criado " " e "spring winter spring summer". " " entra no pool
O mais provável é que a explicação do livro não leve em conta a linha do println.
Valew pessoal pelas respostas...
minha duvida é exatamente esta!
Também contei 10 na primeira, mas como o vini mencionou pode ser que ela não tenha contado do sysout...
Obrigado..
[]'s
T
TiagoTC
ViniGodoy:
Eu contei 10.
…
System.out.println(s1 + " " + s2); // 9 e 10. É criado " " e “spring winter spring summer”. " " entra no pool
[/code]
Um dúvida: nessa linha ai em cima não são criadas 3 Strings? Veja: