Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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!