Avatar ·

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á