Loops (for, while)
for loop tab use karte hain jab pata ho kitni baar repeat karna hai. while loop tab jab condition ke true rehne tak repeat karna ho.
do-while loop kam se kam ek baar zaroor chalta hai, chahe condition false hi kyun na ho.
for (int i = 1; i <= 5; i++) {
System.out.println("Lap " + i);
}for loop ke teen parts hote hain, semicolon se separate: initialization (ek baar, loop shuru hone se pehle chalta hai), condition (har iteration se pehle check hota hai — false hote hi loop ruk jaata hai), aur update (har iteration ke *baad* chalta hai, agli condition check se pehle).
Tum multiple variables bhi initialize/update kar sakte ho comma se separate karke — jaise ek variable aage badhe, doosra piche. Teeno parts optional hain (for(;;) ek valid infinite loop hai), lekin normally teeno present hote hain.
for (int i = 0, j = 10; i < j; i++, j--) {
System.out.println(i + " " + j);
}while loop condition ko pehle check karta hai — agar shuru mein hi false ho, to loop ek baar bhi nahi chalega. Ye tab use hota hai jab pata nahi kitni baar repeat karna hai, sirf ek condition true rehne tak chalna hai.
do-while pehle body chalata hai, phir condition check karta hai — isliye ye guarantee deta hai ki loop kam se kam ek baar zaroor chalega, chahe condition shuru mein hi false ho. Menu-driven programs mein do-while commonly use hota hai (pehle menu dikhao, phir check karo user ne exit choose kiya ya nahi).
int choice;
do {
choice = getMenuChoice(); // pehli baar zaroor chalega
} while (choice != 0);for-each loop (for (Type item : collection)) arrays aur collections ko traverse karne ka sabse simple aur readable tareeka hai — index manage karne ki zaroorat nahi, "off-by-one" errors ka risk khatam.
Limitation: isse tum current index nahi jaan sakte (agar zaroorat ho), aur collection ko traverse karte waqt modify (add/remove) nahi kar sakte — aisa karne par ConcurrentModificationException aayegi. Aur ye sirf forward direction mein hi chalta hai, reverse ya skip karna possible nahi.
int[] scores = {90, 85, 77};
for (int s : scores) {
System.out.println(s);
}Ek loop ke andar doosra loop — bahut common hai patterns print karne, 2D arrays traverse karne, ya har pair of items compare karne ke liye. Outer loop rows control karta hai, inner loop columns — outer ek baar chalta hai to inner *poora* chalta hai.
Time complexity samajhna zaroori hai: agar outer loop N baar chalta hai aur inner bhi N baar, total N×N = N² operations hote hain — bade N ke liye ye slow ho sakta hai.
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
System.out.println();
}
// *
// * *
// * * *for(;;) ya while(true) infinite loop banate hain — normally galti se banti hain (bug, jab tum bhool jaate ho condition ko update karna), lekin server programs, game loops (jo continuously chalte rehna chahiye), ya "poll until event" jaisi situations mein jaan-boojh kar use hoti hain, saath mein ek internal break condition ke.
Agar accidental infinite loop ban jaaye, program "hang" ho jaata hai (kabhi khatam hi nahi hota) — IDE mein "stop" button dabana padta hai. Isliye har loop likhте waqt khud se poochho: "condition kabhi false hogi kya?"