Diferenças for, forEach e While?

Por favor qual é a diferença dentre for, forEach e While? Poderia me citar exemplo prático?

Atenciosamente,
André AS

sim.

[code]// a exp1 é executada uma vez. Sempre depois que a ultima linha do for for executada a exp2 será executada.A exp2 pode ser executada varias vezes
for(exp1; condicao; exp2){//as exp são opcionais, a condição é obrigatória.
// corpo do for
}

ex: imprime de 0 até 9;
for(int i=0; i< 10; i++){
System.out.println(i);
}

while(condicao){// utiliza somente a condição obrigatória
//corpo do while
}

ex: imprime de 0 até 9;
int i=0;
while(i<10){
System.out.println(i);
i++;
}

já o forEach é pra ser trabalhado com cunjuntos (vetores, listas, mapas…);
int [] vetor= new vetor[3];
vetor[0]=1;
vetor[1]=2;
vetor[2]=3;

for(int n: vetor){ // é + ou - assim: para cada elemento do vetor faça isso. “n” seria o elemento do vetor a cada iteração do laço.
System.out.println(n);

}
[/code]

dúvidas?

for, usuado comumente para percorrer arrays e java.util.List, o while utilizado para repetição enquanto uma determinada condição for verdadeira já o foreach é um for melhorado, para explicar o que ele tem de melhor vou citar um exemplo

//java 1.4 <
for (int i = 0; i < list.size(); i++) {
    String s = (String) list.get(i);
    System.out.println(s);
}
//java 5 >=
for (String s : lista) {
    System.out.println(s);    
}

Não há tanta diferença… o for e o while são laços, com uma diferença básica:

  • o FOR aceita a declaração de uma variável inicial dentro de seu ‘construtor’, e também executa uma instrução automaticamente ao seu término. Exemplo:

for (int i =0; i < 10; i++){ //blablabla, instrucoes pra executar... //for (variavel_de_inicializacao ; condicao ; instrucao) }
A variavel_de_inicializacao é criada no início do loop…
A condicao é verificada á cada iteração
A instrucao é executada sempre ao final do loop… geralmente usamos um incremento, mas pode ser outra coisa…

  • o WHILE não aceita nem a variavel inicial, e nem a instrução final… apenas recebe a condição de verificação em seu ‘construtor’. Exemplo:

int i = 0; // a variável de controle é declarada manualmente, fora do laço... while(i < 10){ //blablabla, mais instrucoes //while(condicao) i++; // o incremento (ou alguma outra coisa que "invalide" a condição de verificação) é feito manualmente }

E o FOR-EACH nada mais é do que uma nova forma de se escrever um FOR, seu funcionamento é o mesmo que o FOR, o grande diferencial é que ele toma conta de vários aspectos automaticamente… quando você escreve um laço usando

for (Object obj : listaComIterator){} a JVM automaticamente "expande" o código em um for comum, mais ou menos assim:

[code]//codigo com for-each
public Integer sum(List liszt) {
int total = 0;
for(int num : liszt) {
total += num;
}
return total;

//codigo expandido
public Integer sum (List liszt) {
int total=0;
for(Iterator iter=liszt.iterator(); iter.hasNext():wink: {
int num = ((Integer)iter.next()).intValue();
total += num;
}
return new Integer(total);
}[/code]
Veja mais sobre o for-each aqui: http://today.java.net/pub/a/today/2006/11/07/nuances-of-java-5-for-each-loop.html