Bom, estava aqui fazendo uns exercícios (um programa simples para armazenar informações de funcionários), e reparei que fiz o seguinte código:
[code]package main;
import comum.Funcionario;
import java.util.Scanner;
public class TestaFuncionarioVetor {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String nome, cargo;
int matricula, percentualDesconto;
double salarioBruto;
Funcionario funcVetor[] = new Funcionario[10];
for (int i = 0; i < 10; i++){
System.out.println("Digite o nome: ");
nome = input.next();
System.out.println("Digite a matrícula: ");
matricula = input.nextInt();
System.out.println("Digite o cargo: ");
cargo = input.next();
System.out.println("Digite o salario bruto: ");
salarioBruto = input.nextDouble();
System.out.println("Digite o percentual de desconto: ");
percentualDesconto = input.nextInt();
Funcionario func = new Funcionario (matricula, percentualDesconto, nome, cargo, salarioBruto);
funcVetor[i] = func;
}
for (int i = 0; i < funcVetor.lenght; i++){
funcVetor[i].exibirDados();
}
}
}
[/code]
Ele condiz com o que me foi ensinado, mas tem algo que acho estranho nele:
Antes do primeiro for, eu crio várias variáveis para armazenar as informações do funcionário. Dentro do for, eu uso essas variáveis, e depois eu crio um objeto do tipo Funcionario passando essas variáveis para o construtor (sobrecarregado), e depois eu atribuo esse objeto ao campo correspondente do vetor.
Ao meu ver, tem uma "ineficiência" do código aí. Não seria melhor eu criar o objeto (com o construtor padrão) no início do for, depois ir alterando os valores desse objeto, e depois passá-lo para o vetor? Dessa forma:
[code] for (int i = 0; i < 10; i++){
Funcionario func = new Funcionario ();
System.out.println("Digite o nome: ");
func.setNome(input.next());
System.out.println("Digite a matrícula: ");
func.setMatricula(input.nextInt());
System.out.println("Digite o cargo: ");
func.setCargo(input.next());
System.out.println("Digite o salario bruto: ");
func.setSalarioBruto(input.nextDouble());
System.out.println("Digite o percentual de desconto: ");
func.setPercentualDesconto(input.nextInt());
funcVetor[i] = func;
}[/code]
Se precisarem de mais informações sobre o código ou a classe Funcionario, eu posso postar aqui.
Qual dos dois códigos é melhor?
E me avisem se eu estiver fazendo algo errado nos códigos!
