Pessoal, tudo bem? Tenho uma dúvida referente ao instanciar objetos dentro de um loop adicionando os objetos dentro de um array. Como fica a situação? Em cada loop eu crio um objeto do tipo funcionário, mas a variável é sempre a mesma. Então eu teria uma variável para vários objetos? Segue o código.
System.out.println("Quantos funcionário quer inserir? ");
int func = ler.nextInt();
empresa.empregados = new Funcionario[func];
for (int i=0; i<func; i++) {
Funcionario f = new Funcionario();
System.out.println("Digite o nome: ");
f.nome = lerString.nextLine();
System.out.println("Digite o salario: ");
f.salario = ler.nextInt();
empresa.adiciona(f);
}
Não se preocupe de estar usando a mesma variável, pois ela é apenas um ponteiro para o endereço de memória onde a instância do funcionário está na memória.
A cada iteração, a variável f
recebe um novo funcionário (new Funcionario()
), mas o funcionário instanciado na iteração anterior já foi adicionado à lista, ou seja, a referência para a instância na memória já está guardada, o que não causa problemas em substituir a referencia da variável f
.
Isso que está fazendo é muito comum.
1 curtida
Então depois de cada iteração, quando o funcionário já está guardado no array, o ponteiro passa a ser o índice do array? E a variável f fica “livre” para a próxima iteração?
Valeu Lucas. Isso é só para didática mesmo, pois para esse caso, o melhor é usar coleções.
1 curtida