因為for循環有很多變化,是以for循環是java語言中用處最多的語句。一個最常見的用法是有多個循環控制變量。在使用多個循環控制變量時,每個表達式的初始化表達式和疊代表達式用逗号分隔。下面是一個簡單的例子:
程式輸出如下所示:
注意,逗号将兩個初始化表達式和疊代表達式分開的方式。當循環開始時,在循環的初始化部分初始化變量i和變量j。每次循環開始時,遞增變量i,遞減變量j。當i大于等于j時結束循環。理論上,可以有任意數量的循環控制變量,但實際上,兩三個循環控制變量就會讓for循環很難看。
for循環的另一種常見變化與循環控制條件的本質有關。這種情況不需要引入循環控制變量。條件語句可以是任意有效的boolean表達式。在下面的例子中,循環一直執行,直到使用者在鍵盤敲擊字母s:
通過對循環定義的部分片段留白,可以為for循環創造許多有趣的變化。在java中,for循環的初始化部分、條件部分或疊代部分中的任何一個或全部都可能為空。例如,考慮下面程式:
這裡,for循環的疊代表達式為空。但是,循環控制變量i在循環體内部遞增。這意味着,每次循環時隻檢查變量i是否等于10,不再進行其他操作。但是,由于變量i在循環主體内部增加,是以循環正常運作,顯示以下輸出:
在下一個例子中,for循環的初始化部分也移除了。
在這個版本中,變量i在循環開始前初始化,而不是作為for循環的一部分。一般情況下,會在for的内部初始化循環控制變量。通常,隻有在初始值不是由for語句内部的過程得到的情況下,才将初始化語句放在循環外面。
通過将for循環的條件表達式留白,可以建立無限循環(infinite loop)。這是一個永不終止的循環。例如,很多java程式員用下面的代碼段建立無限循環:
循環将永遠運作下去。盡管一些程式設計任務(如作業系統的指令程序)需要無限循環,但是絕大多數的“無限循環”僅僅是包括特殊終止語句的循環。在本章末将會看到如何停止這類循環。(提示:使用break語句終止循環。)
在java中,for循環(或其他循環)的循環體可以留白。這是因為,從文法上看,空語句(null statement)是有效的。沒有循環體的循環經常很有用。例如,下面程式就用了一個沒有循環體的循環來計算1~5之間整數的和:
注意,累加過程在for循環内執行,不需要循環體。請特别關注疊代表達式:
不要畏懼這樣的語句。它們在專業的java程式中經常遇到。如果将它們分為多個部分,就很容易了解了。簡言之,這個語句就是将sum的結果加上i再賦給sum,然後将變量i遞增1。是以,該語句與以下語句相同: