ফর-ইচ লুপ কালেকশনের প্রতিটি এলিমেন্টের জন্য একটি কোড ব্লক রান করার একটি ব্যবস্থা দেয়। কিছু ডকুমেন্টেশন (যেমন Oracle-এর ডকুমেন্টেশন) এগুলোকে এনহ্যান্সড for লুপ বলে।
এখানে সাধারণ সিনট্যাক্স:
for(declaration: collection) {
body;
}
declaration অংশটি কালেকশন থেকে অ্যাসাইন করা মানগুলো ধরে রাখতে ব্যবহৃত ভ্যারিয়েবলটি ডিক্লেয়ার করে।
collection হলো একটি অ্যারে বা কালেকশন, যেটি সেই মানগুলো ধরে রাখে যেগুলো লুপ ভ্যারিয়েবলে অ্যাসাইন করা হবে।
body-এর মধ্যে সেই স্টেটমেন্টগুলো থাকে যেগুলো কালেকশনের প্রতিটি মানের জন্য একবার রান করা হবে।
যেমন:
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for(char vowel: vowels) {
System.out.println(vowel);
}
যার আউটপুট:
a
e
i
o
u
সাধারণত একটি for-each লুপ নিচের কারণগুলোর জন্য একটি for লুপের চেয়ে বেশি পছন্দনীয়:
for-each লুপ সব মানের উপর ইটারেট করার নিশ্চয়তা দেয়।for-each লুপ আরও ডিক্লারেটিভ, অর্থাৎ কোডটি কী করছে সেটি জানাচ্ছে, কীভাবে করছে সেটি নয়।for-each লুপে ভুল হওয়ার সুযোগ কম, যেখানে for লুপে অফ-বাই-ওয়ান এরর হওয়া সহজ (< বনাম <= ব্যবহারের কথা ভাবুন)।for-each লুপ সব ধরনের কালেকশনে কাজ করে, যার মধ্যে সেগুলোও আছে যেগুলো এলিমেন্ট অ্যাক্সেস করতে ইনডেক্স ব্যবহার সমর্থন করে না (যেমন একটি Set)।