eu gostaria de saber se o arraylist.remove apenas remove as referências do endereço da memoria onde o objeto está ou se ele apaga o objeto da memória. veja esse caso:
publicObjectgetRandom(){intrandom=(int)Math.floor(Math.random()*ação.size());//ação é um ArrayList<object>Objectsaida=ação.get(random);ação.remove(random);returnsaida;}
eu quero saber se neste caso o object saida mantem o endereço de memória onde o objeto está ou se o ação.remove() apagou o objeto.
O ArrayList aponta para o objeto, contem uma referencia para ele. Quando voce remove o objeto do ArrayList ele apenas deixa de ser referenciado la. No seu código você antes de remover o objeto do ArrayList guardou sua referencia na variavel saida. Entao voce tinha duas referencias ao objeto, depois ficou so com uma.
Remover o objeto propriamente dito da memoria será feito em algum momento pelo garbage collector quando ele não for mais referenciado (não é o seu caso já que você aponta pra ele na variavel “saida”).
Lembrando que mesmo se você não tivesse feito um “acao.get(random)” e não tivesse mais nenhuma referencia pra ele, não temos como garantir quando ele será de fato removido pelo garbage collector. Mas pra todos os fins e efeitos, ele iria “sumir do seu alcance” já que não ia poder mais ser referenciado.
Pra concluir, não é uma boa prática criar variáveis com acentos como a variável “ação” que você usou ai. Ou usa “acao” ou então em ingles, “action”.