যে ক্রমে স্টেটমেন্টগুলি এক্সিকিউট হয় তা নির্ধারণ করে। Java শর্তাবলী (, ), লুপ (, , ), এবং ব্রাঞ্চিং স্টেটমেন্ট (, , ) প্রদান করে — এবং switch expressions এর মতো আধুনিক উন্নতিও রয়েছে।
ifswitchforwhiledo-whilebreakcontinuereturnif (score >= 90) {
grade = "A";
} else if (score >= 80) {
grade = "B";
} else {
grade = "F";
}
// ternary — concise if/else for a value
String status = (age >= 18) ? "adult" : "minor";
switch (day) {
case 1: name = "Mon"; break; // ⚠️ break needed — else it FALLS THROUGH
case 2: name = "Tue"; break;
default: name = "Unknown";
}
ক্লাসিক switch প্রতিটি case এর পরে break প্রয়োজন — এটি ভুলে যাওয়া fall-through ঘটায় (এক্সিকিউশন পরবর্তী case-এ চলতে থাকে), যা একটি বদনাম বাগের উৎস।
// arrow syntax: no fall-through, returns a value, more concise
String name = switch (day) {
case 1 -> "Mon";
case 2 -> "Tue";
case 6, 7 -> "Weekend"; // multiple labels
default -> "Unknown";
};
আধুনিক switch এক্সপ্রেশন fall-through দূর করে, একটি মান ফেরত দিতে পারে, এবং পরিষ্কার — নতুন কোডে পছন্দনীয়।
// for — known iteration count
for (int i = 0; i < 10; i++) { ... }
// enhanced for-each — iterate a collection/array
for (String item : items) { ... }
// while — condition checked BEFORE each iteration
while (condition) { ... }
// do-while — body runs at least ONCE (condition checked after)
do { ... } while (condition);
for (int i = 0; i < 10; i++) {
if (i == 5) break; // exit the loop entirely
if (i % 2 == 0) continue; // skip to the next iteration
}
return result; // exit the method
// labeled break — exit nested loops
outer:
for (...) {
for (...) {
if (found) break outer; // breaks BOTH loops
}
}
break একটি লুপ থেকে বেরিয়ে যায়, continue পরবর্তী ইটারেশনে চলে যায়, return মেথড থেকে বেরিয়ে যায়, এবং লেবেল করা breaks একসাথে নেস্টেড লুপ থেকে বেরিয়ে যেতে পারে।
কন্ট্রোল ফ্লো যেকোনো প্রোগ্রামে লজিক এবং সিদ্ধান্ত প্রকাশের মৌলিক মেকানিজম — প্রতিটি অ-তুচ্ছ মেথড এটি ব্যবহার করে।
কনস্ট্রাক্টগুলি এবং তাদের সূক্ষ্মতা বোঝা অপরিহার্য: switch fall-through gotcha (এবং নিরাপদতর আধুনিক switch এক্সপ্রেশন), while এবং do-while এর মধ্যে পার্থক্য (কমপক্ষে একবার রান করুন), সংগ্রহ ইটারেশনের জন্য for-each, এবং ব্রাঞ্চিং স্টেটমেন্ট (নেস্টেড লুপের জন্য লেবেল করা breaks সহ)।
এই বিষয়গুলিতে দক্ষতা অর্জন করা — এবং আধুনিক, কম ত্রুটি-প্রবণ ফর্মগুলি পছন্দ করা (switch expressions, for-each) — সঠিক, পাঠযোগ্য Java লজিক লেখা এবং সাধারণ কন্ট্রোল-ফ্লো বাগ এড়ানোর জন্য মৌলিক।