¿Cómo funciona exactamente el bucle «for each» en Java? Explicación detallada con ejemplos
¡Hola a todos! Acabo de empezar a estudiar Java y me encontré con el bucle for each. Creo que entiendo cómo usarlo, pero quiero profundizar en los detalles: ¿cómo funciona exactamente «bajo el capó»? \n\nPor ejemplo, tengo este código:\n\n```java\nString[] fruits = {"Apple", "Banana", "Cherry"};\nfor (String fruit : fruits) {\n System.out.println(fruit);\n}\n```\n\nVeo que simplemente imprime cada elemento del array. Pero me interesan varios puntos:\n\n1. ¿Es solo azúcar sintáctico sobre el bucle for normal con índice? ¿O hay algo más?\n2. ¿Qué sucede si intento modificar la variable fruit dentro del bucle? ¿Cambiará el elemento del array?\n3. ¿Se puede usar for each con cualquier colección (ArrayList, HashSet, etc.) o solo con arrays?\n4. ¿Hay alguna diferencia de rendimiento entre for each y el for normal?\n5. ¿Qué hago si necesito el índice del elemento dentro del bucle? ¿Tengo que crear una variable separada?\n\nAgradecería una explicación detallada con ejemplos de código. Gracias de antemano.