Como exatamente funciona o loop 'for each' em Java? Explicação detalhada com exemplos
Olá a todos! Acabei de começar a estudar Java e me deparei com o loop for each. Acho que entendo como usá-lo, mas quero entender os detalhes: como ele funciona 'por baixo dos panos'?
Por exemplo, tenho este código:
```java
String[] fruits = {"Apple", "Banana", "Cherry"};
for (String fruit : fruits) {
System.out.println(fruit);
}
```
Vejo que ele simplesmente imprime cada elemento do array. Mas estou interessado em alguns pontos:
1. Isso é apenas syntactic sugar sobre o loop for comum com índice? Ou há algo diferente?
2. O que acontece se eu tentar modificar a variável fruit dentro do loop? O elemento do array será alterado?
3. Posso usar for each com qualquer collection (ArrayList, HashSet, etc.) ou apenas com arrays?
4. Há diferença de performance entre for each e o for comum?
5. O que fazer se eu precisar do índice do elemento dentro do loop? Preciso criar uma variável separada?
Agradeço por uma explicação detalhada com exemplos de código. Desde já