迴圈讓程式重複執行程式碼區塊。Java 提供 for、while、do-while 三種迴圈,各有適用場景。
for (初始化; 條件; 更新) {
// 迴圈主體
}
true → 執行主體;false → 結束迴圈。// 基本計數
for (int i = 0; i < 10; i++) { ... }
// 多變數初始化/更新
for (int i = 0, j = 10; i < j; i++, j--) { ... }
// 陣列/集合遍歷(傳統)
for (int i = 0; i < arr.length; i++) { ... }
// 增強 for(for-each,Java 5+)
for (String s : list) { ... }
// 無條件無限迴圈(需內部 break)
for (;;) { if (done) break; }
while (條件表達式) {
// 迴圈主體
}
特性:進入前先檢查條件,可能零次執行。
int i = 0;
while (i < 10) {
System.out.println(i++);
}
// 讀取輸入直到結束
String line;
while ((line = reader.readLine()) != null) {
process(line);
}
do {
// 迴圈主體
} while (條件表達式); // 注意分號
特性:保證至少執行一次,再檢查條件決定是否繼續。
boolean retry = true;
do {
try { connect(); retry = false; }
catch (Exception e) { retry = askUserRetry(); }
} while (retry);
| 特性 | for | while | do-while |
|---|---|---|---|
| 已知迭代次數 | ✓ 最適合 | ✗ | ✗ |
| 未知次數、前置檢查 | △ | ✓ 最適合 | ✗ |
| 至少執行一次 | △ | ✗ | ✓ 最適合 |
| 計數器管理 | 內建 | 手動 | 手動 |
| 增強 for 遍歷 | 支援 | 不支援 | 不支援 |
break:立即跳出最內層迴圈(或 switch)。continue:跳過本輪剩餘,進入下一輪條件檢查/更新。labeled break/continue:指定跳出/繼續外層迴圈。// 傳統 for
for (int i = 0; i < list.size(); i++) process(list.get(i));
// Stream 風格:宣告式、可串流、並行化
list.stream().forEach(this::process);
list.parallelStream().forEach(this::process);
優勢:不可變風格、鏈式操作、易並行、避免 off-by-one 錯誤。
Collection 遍歷優先增強 for 或 forEach。parallelStream 或 CompletableFuture。