galera eu tenho um array com o seguinte codigo:
String []nomes = {new String(“JOSE”), new String(“MARIA”), new String(“JOAO”)};
quantos objetos eu teria na memoria, considerando a questao de valores literais ?, seriam 4 ou 7 (pois dizem que um valor literal é mais um objeto na memoria?)
Obrigado!!
Bem, creio que serão 7 objetos, embora os 3 objetos usados nos construtores de String (“JOSE”, “MARIA” e “JOAO”) sejam copiados no interior dos construtores sem que reste qualquer referência a eles, e provavelmente não demorarão a ser descartados pelo Coletor de Lixo.
Esse tipo de pergunta é bem capciosa, já que na verdade há mais objetos que você está pensando.
Tipo do objeto Referência Valor
String[] nomes String[3]
String nomes[0] new String("Jose".value)
String nomes[1] new String("Maria".value)
String nomes[2] new String("JOAO".value)
char[] nomes[0].value "Jose".value
char[] nomes[1].value "Maria".value
char[] nomes[2].value "JOAO".value
String Pool: "Jose" "Jose"
String Pool: "Maria" "Maria"
String Pool: "JOAO" "JOAO"
(Há um campo “private char value[]” na classe String.)
Thingol, me desculpe mas será que você poderia ser mais específico?
Fiquei curioso e estou na dúvida de quantos objetos realmente estão instanciados por causa dos chars.
Será que você poderia explica-los?
Muito obrigado!