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

Em relação ao código fiquei com uma dúvida.

Fiquei pensando em relação ao método getTamanho, pois ele retorna o tamanho total, mas não quais posições estão ocupadas, teoricamente então ao chamar o metodo adiciona pela primeira vez, o tamanho do array vai ser 1 (no caso somente a posição 0 vai estar ocupada) e por conter no mesmo metodo a atribuição de valor no trecho( posicaoLivre ++), ao chamar o metodo novamente, o primeiro array vai deixar de existir e agora pela segunda vez o array vai ter tamanho 2 mas somente a posição 1 vai estar ocupada e o resto vai ser Null, esse raciocinio está correto ?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

Olá Guilherme, não sei se entendi corretamente a sua dúvida... mas vamos lá. No caso quando ele chama o método adiciona ele não recria o array ele apenas chama o array criado e continua a popular o mesmo. Então não teremos uma espécie de "restart" do array a cada chamada do método adicionar. Veja a classe GuardadorDeContas:

public class GuardadorDeContas {

    private Conta[] referencias;
    private int posicaoLivre;

    public GuardadorDeContas() {
        this.referencias = new Conta[10];
        this.posicaoLivre = 0;
    }

    public void adiciona(Conta ref) {
        referencias[this.posicaoLivre] = ref;
        this.posicaoLivre++;
    }

    public int getQuantidadeDeElementos() {
        return this.posicaoLivre;
    }
}

No construtor da classe ele cria um array, e no método adiciona ele utiliza o this que vai fazer referência ao objeto GuardadorDeContas que é instânciado na classe Teste quando fazemos :

GuardadorDeContas guardador = new GuardadorDeContas();

Caso tenha ficado dúvidas ficarei feliz em ajudar. Grande abraço.

Entendi, na verdade o array é criado já com 10 posições desde o começo,

solução!

Boa tarde Guilherme, é isso mesmo meu amigo. O array você cria ele com tamanho fixo e você pode atualizar as referências que ele armazena através do íncice dele, exemplo conta[2] = "exemplo de novo objeto".

Você vai ver que em java temos uma coleção de estruturas de dados bem bacana mano, tal como as listas, conjuntos, Maps... no dia a dia é bem raro ter que usar o array puro rs, mas é bom conhecer.

Meu amigo qualquer coisa é só falar, bons estudos! Grande Abraço.