Dúvida sobre for aprimorado

Olá pessoal estou começando agora no Java e me deparei com um for diferente não estou conseguindo compreender a idéia do codigo.
desde ja agradeço a colaboração do pessoal =)

int[] array = { 1, 2, 3, 4, 5 };

for( int temp : array ) //o que exatamente esta acontecendo aqui ?? se puderem me explicar de uma maneira facil seria uma boa pois ñ compreendi ainda isso
   System.out.println( "" + temp ); 

Esse for equivale a:

[code]int[] array = { 1, 2, 3, 4, 5 };

for(int i = 0; i < array.length; i++) {
int temp = array[i];
System.out.println( “” + temp );
}[/code]

Por isso, esse for é conhecido como "for each" (para cada). Ou seja, para cada elemento dentro de array, atribuímos ele na variável temp e fazemos uso dele.

O compilador transforma o for aprimorado em um for comum.int array = new int[] {1, 2, 3, 4}; for (int i : array) { System.out.println(i); }O compilador transforma em:int array = new int[] {1, 2, 3, 4}; for ($c = 0; $c < array.length; $c++) { int i = array[$c]; { System.out.println(i); } }O mesmo ocorre com coisas que implementam a interface Iterable. O compilador cria o Iterator e o itera automaticamente sem que você veja.

È também conhecido como “for each”.
Significa que a cada iteração, a variável temp representação um nó diferente do array, list, vetor que usou.
Ou seja, na primeira iteração ele representará o primeiro elemento, da segunda… o segundo e assim por diante.
Bem mais simples, não?

Abraços.