增强for循环是Java中遍历数组最简洁安全的方式,适用于只读场景;其语法为for(元素类型 变量名:数组名),支持一维及二维数组嵌套遍历,但无法获取索引、修改基本类型原值,且不支持null数组或反向遍历。

增强for循环(也叫for-each)是Java中遍历数组最简洁、最安全的方式之一,适合只读场景。它不暴露索引,不需手动控制边界,写起来干净,出错率低。
一、增强for循环的基本用法
语法统一为:for (元素类型 变量名 : 数组名) { ... }。变量每次接收一个数组元素的值,自动按顺序取完为止。
- 整型数组:
int[] nums = {10, 20, 30}; for (int n : nums) System.out.println(n); - 字符串数组:
String[] fruits = {"apple", "banana"}; for (String f : fruits) System.out.println("I like " + f); - 浮点型、布尔型等基本类型数组,写法同理,只需匹配对应类型即可
二、二维数组怎么遍历?
二维数组本质是“数组的数组”,需嵌套两层增强for:外层取行(一维数组),内层取该行中的每个元素。
- 示例:
int[][] grid = {{1, 2}, {3, 4}, {5, 6}}; - 遍历写法:
for (int[] row : grid) { for (int cell : row) { System.out.print(cell + " "); } System.out.println(); } - 注意:不能用单层增强for直接遍历二维数组的全部元素,必须拆成两层
三、常见误区与限制
增强for循环看似简单,但几个关键限制直接影响能否正确使用:
立即学习“Java免费学习笔记(深入)”;
- 不能获取当前索引:如果需要知道“这是第几个元素”或要根据下标做计算,得换普通for循环
-
不能修改基本类型数组的原值:写
for (int x : nums) { x *= 2; }不会改变nums本身,因为x只是副本 -
遇到null数组会立即报NullPointerException:使用前建议先判空,比如
if (arr != null) { for (...) { ... } } - 不支持反向遍历、跳过元素或中途重置:逻辑复杂时,传统for更可控
四、字符串不是数组,怎么用增强for?
字符串(String)本身不能直接用于增强for,因为它不是数组,也不实现Iterable。但可以快速转成字符数组再遍历:
String s = "hello"; for (char c : s.toCharArray()) { System.out.println(c); }- 如果想按字串(如单词)处理,可先
split(" ")转成String[],再用增强for - 避免误用:
for (char c : "hello")会编译失败——字符串不能直接作为遍历对象


















