传统for循环是Java中遍历数组最常用、最直观的方式,适用于需索引的场景;注意array.length是属性而非方法,下标范围为0到array.length-1,越界将抛ArrayIndexOutOfBoundsException。

用 for 循环遍历数组最直接
Java 中最常用、最直观的方式就是传统 for 循环,尤其适合需要索引的场景(比如修改元素、比较相邻项)。
注意点:array.length 是属性不是方法,别加括号;下标从 0 开始,上限是 array.length - 1,越界会抛 ArrayIndexOutOfBoundsException。
示例:
int[] nums = {1, 2, 3};
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}增强 for 循环(for-each)适合只读访问
语法简洁,底层用迭代器或索引实现,但隐藏了下标——这意味着你无法在遍历时修改原数组元素(改的是循环变量副本),也不能跳过或回退。
立即学习“Java免费学习笔记(深入)”;
常见误用:想边遍历边删除数组元素,这是无效的;数组长度固定,for-each 不支持动态调整。
示例:
String[] names = {"Alice", "Bob"};
for (String name : names) {
System.out.println(name.toUpperCase()); // 只能读/用,不能通过 name 修改 names[i]
}用 Stream API 遍历适合函数式处理
Java 8+ 提供 Arrays.stream(),适合链式操作(过滤、映射、聚合),但要注意:基本类型数组(如 int[])会自动装箱为 Integer,有性能开销;若只需简单遍历,反而比传统 for 慢。
使用前提:导入 java.util.Arrays;对象数组可直接流化,基本类型需显式调用 Arrays.stream(arr)。
示例:
int[] data = {1, 2, 3};
Arrays.stream(data).forEach(System.out::println); // 输出 1 2 3多维数组遍历必须嵌套处理
二维数组本质是一维数组的数组,arr[i] 是一维数组引用,所以外层控制行,内层控制列。别误以为 arr.length 是总元素数——它只是行数。
容易出错的地方:内层循环用 arr[i].length 而非 arr.length;不规则二维数组(每行长度不同)必须按行取长。
示例:
int[][] matrix = {{1, 2}, {3, 4, 5}};
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}真正麻烦的不是选哪种方式,而是混用时没意识到语义差异:比如在 for-each 里试图通过索引修改数组,或者对 null 数组调用 stream() 导致 NullPointerException——这些地方往往没报错提示,但结果不对。










