Mr.Mou @ ShiShi AP Center

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 常见使用场景(一句话) 需要索引、要修改元素、要跳着或反向遍历 循环次数不确定,以条件为主(如找到就停止) 只读遍历:打印、求和、统计(不修改元素)