לולאות for
הן הלולאות
המורכבות ביותר בג'אווה. המבנה שלהן הוא
for ( init-expression; while-expression; advance-expression)
statement
הסוגריים מכילים שלושה ביטויים מופרדים בנקודה פסיק. הביטוי הראשון מחושב פעם אחת, בתחילת ביצוע הלולאה. זה הדבר הראשון שקורה בלולאה כזו. את הביטוי האחרון מחשבים לאחר כל פעם שגוף הלולאה מתבצע. בערך של שני הביטויים הללו אין משתמשים כלל. הם מועילים רק אם הם משנים ערך של משתנים, או משנים את מצב התוכנית בדרך אחרת. הביטוי האמצעי מחושב לפני כל איטרציה של הלולאה, והוא צריך להחזיר ערך בוליאני. אם הוא נכון, גוף הלולאה מתבצע. לאחר ביצוע גוף הלולאה מחשבים שוב את ערך הביטוי השלישי, ואז בודקים שוב את הערך של הביטוי השני.
לולאה כזו שקולה לגמרי לקוד הבא, שמשתמש בלולאת while
:
init-expression;
while ( while-expression )
statement
advance-expression;
לולאת ה-for
קצת יותר קומפקטית ואלגנטית מלולאת ה-while
השקולה. ההבדל לא גדול, אבל בזכות הבדל קטן בקריאוּת תוכניתנים ותוכנתיניות מרבים בשימוש בלולאות while
. לולאות for
שימושיות בעיקר כאשר השימוש בהן אידיומאטי, כלומר הוא מופע של תבנית חוזרת
שמופיעה בהרבה תוכניות. כאשר השימוש אידיומאטי, קל לכתוב לולאות כאלה וקל
להבין אותן בקוד. אבל כאשר השימוש מתחכם ולא שגור, לולאות for
נוטות להיות מבלבלות.
שני השימושים השגורים ביותר הם ביצוע גוף הלולאה מספר שלם ידוע מראש של פעמים, וסריקה של כל האיברים של מבנה נתונים, למשל מערך.
ללולאות for
יש תכונה מיוחדת. הביטוי הראשון יכול להכיל
הכרזה על משתנה. המשתנה הזה מוכר רק בתוך הלולאה (כולל בביטויים שבראשה),
ותחום ההגדרה שלו מסתיים בסוף הלולאה. זה שימושי מאוד כדי להגדיר משתני
מנייה, למשל. הקוד הבא הוא התבנית הנפוצה ביותר של שימוש בלולאת for
(אפילו השם של משתנה המניה הוא חלק מהתבנית ☺):
for ( int i=0; i<1000; i++ )
statement