Estrutura de repetição for

Alguem pode explicar o resultado da quetão seguinte:

[code] public class Teste{
static boolean foo(char c){
System.out.print(c);
return true;
}

public static void main( String[] argv )
{
int i =0;
for ( foo(‘A’); foo(‘B’)&&(i<2); foo(‘C’))
{
i++;
foo(‘D’);
}
}
}[/code]

resposta–> ABDCBDCB

O for inicia e a expressão de inicialização é executada e imprime A.
A
É feito o teste da condição e imprime B.
AB
Como o teste é verdadeiro ele entra no for, incrementa o i, e imprime D.
ABD
É executada a terceira expressão que imprime C.
ABDC
É feito o teste da condição novamente e imprime B.
ABDCB
Como o teste é verdadeiro ele entra no for, incrementa o i, e imprime D.
ABDCBD
É executada a terceira expressão que imprime C.
ABDCBDC
É feio o teste da condição novamente e imprime B.
ABDCBDCB
Como o teste é falso o for é finalizado.

A questão é que a terceira expressão é executada depois de executar o corpo do for, a sequencia é:

inicialização --> condição --> corpo --> terceira expressão --> condição …


A ordem em que as coisas ocorrem é a seguinte:

1. Inicialização
2. Verifica se a condição é verdadeira, senão for pára de executar
3. Executa o corpo
4. Código em "iteração" ocorre
5. Volta ao passo 2

A ordem em que as coisas ocorrem é a seguinte:

  1. Inicialização
  2. Verifica se a condição é verdadeira, senão for pára de executar
  3. Executa o corpo
  4. Código em “iteração” ocorre
  5. Volta ao passo 2

BLz,

Valeu galera!!!