Andei pesquisando e vi que ao “igualar” os objetos o java não faz uma cópia do mesmo, apenas associa a referencia de memória, fazendo com que os dois objetos passassem a ser um só, porque ao alterar um o outro é alterado, como visto na execução.
Minha dúvida é por quê nas Strings isso não ocorre, ou seja, os objetos continuam apontando para referências diferentes de memória.
É exatamente a mesma coisa! Você precisa observar apenas que cada literal String como “Oi mundo” ou “String em Java” é um objeto. Sendo assim, ao fazer a atribuição
Stringstr1=newString();str1="teste";
você está apontando str1 para um novo objeto, ao invés de definir o valor interno da String criada com new na 1a linha.
jks1903
rmendes08:
É exatamente a mesma coisa! Você precisa observar apenas que cada literal String como “Oi mundo” ou “String em Java” é um objeto. Sendo assim, ao fazer a atribuição
Stringstr1=newString();str1="teste";
você está apontando str1 para um novo objeto, ao invés de definir o valor interno da String criada com new na 1a linha.
Certo, apenas para eu entender bem entao (não consigo testar agora o código, mas testarei mais tarde).
Se ao invés de String eu estivesse usando StringBuilder, com append e setLength o resultado seria o mesmo obtido nos objetos do tipo Item, ou seja, os dois objetos apontando para a mesma referência, certo?
Obrigado pela resposta.
rmendes08
jks1903:
rmendes08:
É exatamente a mesma coisa! Você precisa observar apenas que cada literal String como “Oi mundo” ou “String em Java” é um objeto. Sendo assim, ao fazer a atribuição
Stringstr1=newString();str1="teste";
você está apontando str1 para um novo objeto, ao invés de definir o valor interno da String criada com new na 1a linha.
Certo, apenas para eu entender bem entao (não consigo testar agora o código, mas testarei mais tarde).
Se ao invés de String eu estivesse usando StringBuilder, com append e setLength o resultado seria o mesmo obtido nos objetos do tipo Item, ou seja, os dois objetos apontando para a mesma referência, certo?
Obrigado pela resposta.
Sim. Assim que puder, faça muitos testes e brinque bastante com estes conceitos. Além de serem importante no dia-a-dia, uma prova de certificação cobra muito esse conteúdo.
jks1903
rmendes08:
jks1903:
rmendes08:
É exatamente a mesma coisa! Você precisa observar apenas que cada literal String como “Oi mundo” ou “String em Java” é um objeto. Sendo assim, ao fazer a atribuição
Stringstr1=newString();str1="teste";
você está apontando str1 para um novo objeto, ao invés de definir o valor interno da String criada com new na 1a linha.
Certo, apenas para eu entender bem entao (não consigo testar agora o código, mas testarei mais tarde).
Se ao invés de String eu estivesse usando StringBuilder, com append e setLength o resultado seria o mesmo obtido nos objetos do tipo Item, ou seja, os dois objetos apontando para a mesma referência, certo?
Obrigado pela resposta.
Isso aí mesmo, fiz os testes e foi conforme o previsto.
Obrigado pela ajuda, foi bem esclarcedor.
Sim. Assim que puder, faça muitos testes e brinque bastante com estes conceitos. Além de serem importante no dia-a-dia, uma prova de certificação cobra muito esse conteúdo.