CSA Java 三种循环对比(for、while、增强 for)
| 比较项目 | for 循环(索引) | while 循环 | 增强 for(for-each) |
|---|---|---|---|
| 是否使用索引(index) | ✅ 是(i) | ✅ 通常是(手动 i++) | ❌ 否 |
| 程序员能否直接控制索引 | ✅ 可以 | ✅ 可以 | ❌ 不可以 |
| 适用于 Array / ArrayList | ✅ 都适用 | ✅ 都适用 | ✅ 都适用(只读最常见) |
| 是否自动从头到尾遍历所有元素 | ❌ 不一定(取决于 i 的写法) | ❌ 不一定(取决于条件和更新) | ✅ 是(固定从头到尾) |
| 能否跳着访问元素(例如每次跳 2 个) | ✅ 可以(i += 2) | ✅ 可以(自行控制) | ❌ 不可以 |
| 能否反向遍历(从后往前) | ✅ 可以(i--) | ✅ 可以(自行控制) | ❌ 不可以 |
| 能否修改 Array / ArrayList 中的元素(考试重点) | ✅ 可以(arr[i] / list.set(i, ...)) | ✅ 可以(使用索引修改) | ❌ 一般不可以(for-each 变量是拷贝) |
| 是否容易产生无限循环 | ❌ 风险低 | ⚠️ 风险较高(容易忘记更新) | ❌ 几乎没有 |
| 语法简洁程度 | 中 | 中 | ✅ 最简洁 |
| AP CSA 常见使用场景(一句话) | 需要索引、要修改元素、要跳着或反向遍历 | 循环次数不确定,以条件为主(如找到就停止) | 只读遍历:打印、求和、统计(不修改元素) |