Diferenças for, forEach e While?

3 respostas
A

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

Atenciosamente,
André AS

3 Respostas

walissongpi

sim.

// 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++;
}

 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);

}

dúvidas?

thiago.correa

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);    
}
marcelo.bellissimo

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:
//codigo com for-each
public Integer sum(List<Integer> liszt) {
int total = 0;
for(int num : liszt) {
    total += num;
}
return total;

//codigo expandido
public Integer sum (List<Integer> liszt) {
    int total=0;
    for(Iterator<Integer> iter=liszt.iterator(); iter.hasNext();) {
        int num = ((Integer)iter.next()).intValue();
        total += num;
    }
    return new Integer(total);
}
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
Criado 13 de abril de 2010
Ultima resposta 13 de abr. de 2010
Respostas 3
Participantes 4