Olá pessoal no livro da kathy, estou estudando sobre Strings (cap 6). Em um determinado momento tem um trecho de código que lança um desafio, descobrir quando Strings e referências foram criadas:
No livro diz que a resposta é 8 objetos Strings criados, porém eu contei 9! Eu considerei a String criado no sout. Ai fiquei na dúvida, é criado uma nova String no sout? Pois caso positivo o livro está errado =P
Strings1="spring ";// a string já está criada antes de chegar a esta linhaStrings2=s1+"summer ";// criada a string "spring summer" - (1)s1.concat("fall ");// criada a string "spring summer fall" - (2) - essa string já ficou disponível para garbage collections2.concat(s1);// criada a string "spring summer spring " - (3) - mesma coisas1+="winter ";// criada a string ("spring winter") - (4) - note que a string anterior "spring " não está mais referenciada,System.out.println(s1+" "+s2);// criada a string ("spring winter spring summer ") - (5) - essa string é usada pelo println, e depois desprezada
Esquisito, contei só 5 - a expressão s1 + " " + s2 é equivalente a:
que cria apenas uma nova string, não 2 como seria de se esperar. Sei lá, acho que também não estou sabendo contar direito
A
andreylh
entanglement, no mínimo 8 tem, eu contei 9…
Strings1="spring ";// 1 - springStrings2=s1+"summer ";// 2 ? summer, 3 ? spring summers1.concat("fall ");// 4 ? fall, 5 ? spring falls2.concat(s1);// 6 ? spring summer springs1+="winter ";// 7 ? winter, // 8 ? spring winterSystem.out.println(s1+" "+s2);// 9 ? spring winter spring summer// essa ultima String o livro não conta
ViniGodoy
Descartando as otimizações (que o entanglement levou em conta), eu contei 10. Agora, sem a linha do println, são só 8 mesmo.
muehlner
Sempre tive duvidas aqui tbm
mais ao meu modo de ver
Strings1="spring ";// 1º Primeiro ObjetoStrings2=s1+"summer ";// 2 º, 3º objetos "summer" e "spring summer"s1.concat("fall ");// 4º objeto que neste caso fica sem refencia "fall" 5º quinto objeto tbm é criado e fica sem referencia "Spring fall"s2.concat(s1);// 6º objeto que tambem fica sem referencia "spring summer spring" aqui só é criado um objeto porque "s1" ja existe na memoria ao contrario de "fall" que foi criado logo acimas1+="winter ";// o mesmo que s1 = s1 + "winter" ou seja 7º e 8º objetos criados