Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Array de tipos primitivos

"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?

3 respostas

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/

solução!

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.