Pessoal bom dia,
Abaixo mostrarei uma dica de performance de como percorrer um vetor através da estrutura de repetição FOR:
A maioria dos programadores fazem assim:
String[] array = new String[1000000];
for(int i=0; i<array.length; i++){
System.out.println(array[i]);
}
Ou seja, utilizam o método lenght() para pegar o tamanho do vetor e percorre-lo. Isso está certo, não está errado essa maneira acima.
Abaixo segue o mesmo código com uma pequena alteração, vejam:
String[] array = new String[1000000];
int j = array.length;
for(int i=0; i<j; i++){
System.out.println(array[i]);
}
Eu coloco o tamanho do vetor na variável j do tipo int, e esta servirá de base para FOR percorrer até o final do vetor.
Porque fiz isso? Digitei mais comandos, ao invés do código ficar mais enxuto, criei mais uma linha.
Então respondendo a essa pergunta:
O que acontece, toda vez que percorro FOR, faço uma chamada ao método length(), que me retorna um número inteiro com o tamanho do vetor, isso consume processamento da maquina, se eu tiver um array de 1000000 objetos, então ele fará 1000000 chamadas ao método length e retornará sempre o mesmo valor do tamanho do array. Não acham um pouco de perda de processamento? Não acham uma coisa meio redundante? Chamar toda vez o mesmo método, para retorna o mesmo valor?
Imagine que toda vez que você for ao banheiro, você ter que ir avisar seu chefe - “Chefe to indo ao banheiro, já volto!” - se você tiver muito apertado e quiser ir com pressa ao banheiro…
Então como meu objetivo neste caso é obter PROCESSAMENTO, então utilizo uma variável em MEMÓRIA com o tamanho do array. As 1000000 interações do FOR consultará a variável que está em memória e não fará uma chamada de método.
É o mesmo que dizer: “Chefe toda vez que quiser ir no banheiro, é só abrir a porta e ir? Ele responde, sim, é só abrir a porta!!”
Nem sempre escrever mais linhas de código significa processamento lento!
Obs: Isso é uma dica para quem está começando a programar e entrando no mundo JAVA. Talvez para Seniors seja óbvio, para quem nunca trabalhou na área e está na faculdade, é novidade.