Objetos instanciados dentro de um loop

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?

Isso mesmo.

Valeu Lucas. Isso é só para didática mesmo, pois para esse caso, o melhor é usar coleções.

1 curtida