Java一维数组遍历应按场景选工具:需索引或修改时用传统for循环;增强for和Stream不支持下标与原地写入;倒序遍历用for(int i=arr.length-1;i>=0;i--);调试推荐Arrays.toString()而非手写打印。

Java 一维数组遍历本身不难,真正提升开发效率的,是根据具体任务选对工具——不是越“新”越好,而是匹配场景才高效。
需要索引或修改数组时,用传统 for 循环
当逻辑依赖位置(比如找峰值、去重、交换首尾、滑动窗口),必须拿到下标。增强 for 拿不到 i,Stream 更不提供原地写入能力。
- 下标范围始终是 0 到 arr.length - 1,越界会抛 ArrayIndexOutOfBoundsException
- 倒序遍历直接写
for (int i = arr.length - 1; i >= 0; i--) - 修改元素(如将负数置零):
if (arr[i]
只读统计或校验,优先增强 for 循环
代码更短、不易越界、语义清晰。它本质是编译器帮你隐藏了索引操作,适合求和、判空、查重复等场景。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 写法简洁:
for (int x : arr) { sum += x; } - 注意:x 是副本,
x = 100不会影响原数组 - 无法获取当前下标;若后续要记录位置,得切回传统 for
过滤、转换、聚合类任务,用 Stream API
Java 8+ 推荐方式,把“做什么”和“怎么做”分离,逻辑更聚焦。但别为了用而用——简单遍历打印,System.out::println 就够了。
立即学习“Java免费学习笔记(深入)”;
- 基本类型数组(如 int[])调
Arrays.stream(arr)得到的是 IntStream,直接用sum()、average()等原生方法,避免装箱开销 - 要转成 List 或做 distinct/map 等操作,才需
.boxed().collect(Collectors.toList()) - 引用类型数组(如 String[])可直接链式调用:
Arrays.stream(arr).filter(s -> s.length() > 2).map(String::toUpperCase).toArray(String[]::new)
调试和快速验证,别手写循环打印
开发阶段最常做的不是遍历,而是确认数组内容是否符合预期。反复写 for 打印既慢又易错。
- 一维数组:直接
System.out.println(Arrays.toString(arr)) - 二维或嵌套数组:用
Arrays.deepToString(arr2D) - 自定义对象数组:确保重写了
toString(),否则仍显示哈希码

















