java中数组与循环天然适配:普通for适合需索引或修改的场景,增强for仅适用于只读遍历;修改必须用普通for配合arr[i],增强for中修改会编译失败,长度应始终用arr.length。

数组和循环在 Java 中天然适配,关键在于用对方式——不是堆砌代码,而是让结构匹配需求。
用对循环类型:遍历、修改、索引缺一不可
普通 for 循环适合需要索引或修改元素的场景,比如批量翻倍、查找最大值、替换特定值。它直接操作 arr[i],可控性强。增强 for 循环(for-each)简洁安全,但无法获取下标,也不能在遍历时修改原数组内容——它只是读取副本。
- 要改数据?用普通 for,靠 i 定位
- 只读输出或校验?增强 for 更干净
- 别在增强 for 里写 arr[i] = ... ——编译不通过
数组长度别硬编码:用 arr.length 动态兜底
写 for (int i = 0; i 处理一个 int[5] 数组,看似没问题,但一旦数组长度变化,逻辑就断了。用 arr.length 是唯一可靠方式,它随数组实例实时返回真实长度,无论静态初始化还是 new 出来都适用。
- 哪怕数组是空的(new int[0]),arr.length 也返回 0,不会越界
- 配合 i 判断,比手动数元素更防错
大批量数据不硬扛:分批+对象封装双保险
处理上万条记录时,单个大数组不仅吃内存,还难维护。两个实用策略:一是按固定大小切片,比如每 50 或 999 条一组;二是放弃扁平数组,改用自定义类封装关联数据(如 Student 含姓名、成绩等字段),再存进 List
- 分批用 list.subList(i, Math.min(i + batchSize, list.size()))
- 对象封装避免“quiz[0] 对应 student[0]”这类脆弱索引耦合
- 数据库批量操作(如 MyBatis 的 insertBatch)也依赖这种分组逻辑
性能敏感场景:避开常见坑点
循环里创建对象、反复调用 getter/setter、嵌套多层循环不做剪枝,都会拖慢速度。真正提升效率的不是换语法,而是减少冗余动作。
- 对象实例尽量提到循环外创建
- IO 操作(如日志、DB 查询)能缓存就缓存,别放 inside loop
- 大数据量优先考虑 parallelStream(),但注意线程安全和副作用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











