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

Dúvida no Ex. 9 da Aula 5 - Declare e use um ArrayList - Porque não alterou o valor no ArrayList?

Se String não é um tipo primitivo, então o que a variável s recebeu foi o ponteiro para a String, correto? Então ao alterar o valor de s, não deveria alterar o conteúdo do que está sendo apontado, e assim sendo, também alterar o valor do Array? Obrigado!

2 respostas
solução!

Tem razão, não é tipo primitivo. Mas vale lembrar que é uma referência local que está sendo mudada, e não a da arraylist. Repare esse teste simples:

ArrayList<String> lista = new ArrayList<String>();
lista.add("alura");
String x = lista.get(0);
x = "caelum";
// aqui x mudou, aponta para outra String, mas 
// a lista continua apontando para a dela mesma

Você pode enxergar também de outra forma mais radical:

String x = "alura";
String y = x;
x = "caelum";
// quanto vale y agora?

Perfeita a explicação! Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software