كيف يعمل حلقة 'for each' في Java بالضبط؟ شرح مفصل مع أمثلة
مرحبًا بالجميع! لقد بدأت للتو في تعلم Java وواجهت حلقة for each. يبدو أنني أفهم كيفية استخدامها، لكنني أريد التعمق في التفاصيل: كيف تعمل بالضبط 'تحت الغطاء'؟
على سبيل المثال، لدي هذا الكود:
```java
String[] fruits = {"Apple", "Banana", "Cherry"};
for (String fruit : fruits) {
System.out.println(fruit);
}
```
أرى أنها تطبع كل عنصر من المصفوفة. لكنني مهتم بعدة نقاط:
1. هل هي مجرد سكر نحوي (syntactic sugar) فوق حلقة for العادية مع مؤشر (index)؟ أم هناك شيء آخر؟
2. ماذا سيحدث إذا حاولت تغيير المتغير fruit داخل الحلقة؟ هل سيتغير عنصر المصفوفة؟
3. هل يمكن استخدام for each مع أي مجموعات (Collections) مثل ArrayList و HashSet وما إلى ذلك؟ أم فقط مع المصفوفات؟
4. هل هناك فرق في الأداء بين for each و for العادية؟
5. ماذا أفعل إذا كنت بحاجة إلى مؤشر (index) العنصر داخل الحلقة؟ هل يجب علي إنشاء متغير منفصل؟
سأكون ممتنًا لشرح مفصل مع أمثلة كود. شكرًا مقدمًا.