"Uma array de tipos primitivos guarda valores, uma array de objetos guarda referências"
Não entendi essa afirmação. Arrays não guardam sempre referências?
"Uma array de tipos primitivos guarda valores, uma array de objetos guarda referências"
Não entendi essa afirmação. Arrays não guardam sempre referências?
Oi Thamirys, tudo bem ?
Lembra que tipo primitivo tem valor padrão, por exemplo int por padrão é 0. Já objeto, tem por padrão valor null, por isso o array armazena as referências.
Espero ter ajudado.
Abraços
Oi Thamirys,
Você está correta. Arrays são objetos que armazenam referências à posições de memória, que por sua vez contêm valores, sejam eles ou primitivos, ou complexos (objetos). Uma boa referência para assunto pode ser encontrada aqui: https://www.caelum.com.br/apostila-java-orientacao-objetos/um-pouco-de-arrays/
Boa noite Tamirys. A afirmação está correta. Para você entender melhor, vou te dar um exemplo de acordo com a aula: Vamos primeiro fazer um array de tipos primitivos e atribuir o valor de algumas variáveis a ele:
int[] idades;
idades = new int[2];
int vlr1 = 50;
int vlr2 = 100;
idades[0] = vlr1;
idades[1] = vlr2;
Agora, tente mudar o valor de alguma das variáveis. Você verá que o valor do array permanece o mesmo, ou seja, o que foi salvo no array não foi uma referência para a variável que você criou, e sim, o valor que estava nela. Exemplo:
int[] idades;
idades = new int[2];
int vlr1 = 50;
int vlr2 = 100;
idades[0] = vlr1;
idades[1] = vlr2;
vlr1 = 999;
System.out.println(idades[0]);
System.out.println(vlr1);
Por outro lado, ao fazer um array de objetos, quando alteramos o valor de um objeto, este valor também é alterado no array, pois o array não salva o valor do objeto, e sim uma referência para ele. Exemplo:
Conta[] minhasContas;
minhasContas = new Conta[2];
Conta conta1 = new Conta();
conta1.saldo = 1000.0;
minhasContas[0] = conta1;
Conta conta2 = new Conta();
conta2.saldo = 2000.0;
minhasContas[1] = conta2;
System.out.println(minhasContas[0].saldo);
conta1.saldo = 3456
System.out.println(minhasContas[0].saldo);
Perceba que não alteramos o valor da conta1 utilizando o array porém, ao imprimirmos o saldo da conta adicionada ao array, ele também foi alterado. Por isso dizemos que salvamos a referência de um objeto e não seu valor.
Espero ter esclarecido.
Abraços.