E aí pessoal, estou com uma dúvida sobre Array num exercício, já consegui fazer a classe funcionar, porém, não entendi muito bem como que ocorre o processo.
class Funcionario {
String nome;
String departamento;
String rg;
Data dataDeEntrada;
//Data dataDeEntrada = new Data();
double salario;
}
class Empresa {
String nomeEmpresa;
Funcionario[] empregados;
String cnpj;
void adiciona(Funcionario f) {
//procuraArray:
for(int i = 0; i < empregados.length; i++) {
if(empregados[i] == null) {
this.empregados[i] = f;
break;
}
}
}
void mostraEmpregados() {
for(int i = 0; i<this.empregados.length; i++) {
System.out.println("Funcionário na posição: " + i);
System.out.println("Salário do funcionário: "+this.empregados[i].salario);
}
}
}
public class EmpresaTest {
public static void main(String[] args) {
Empresa empresa = new Empresa();
empresa.empregados = new Funcionario[10];
for(int i = 0; i < empresa.empregados.length; i++) {
Funcionario f = new Funcionario();
f.salario = 1000 + i * 100;
empresa.adiciona(f);
}
empresa.mostraEmpregados();
double b = empresa.empregados[7].salario;
System.out.println(b);
}
}
Na classe EmpresaTest, eu instanciei um novo objeto (empresa), e depois empresa.empregados como uma array com 10 posições, até ai, beleza. Fiz um loop for para preencher as posições da array empresa.empregados, e nesse loop ocorre a instanciação de um novo objeto Funcionario toda vez, e depois de usar o método salario() para definir o salario desse novo Funcionario “f”, utilizo o metodo adiciona() para adicionar o novo Funcionario, porém, não entendi muito bem como ocorre esse processo de instanciar um novo Funcionario no loop:
1ª: Se é criada um objeto “f” toda vez, então terei 10 objetos f?
2ª: Mas como eu consigo acessar o salario, por exemplo, do empresa.empregados[5], sendo que eu não defini a posição em que ele deveria ser posto, e só fiz o loop?
3ª: Por que eu não teria que ter f0, f1, f2, f3, f4… f9 ao invés de 10 "f"s?
Muito obrigado!