java增强for循环用于只读、按序、免索引遍历数组,一维数组语法为for(类型 变量:数组),二维需嵌套,string需转char[]或split(),不支持修改原数组、null数组需判空、无法获取索引。

Java 增强 for 循环(for-each)遍历数组非常直接,核心是“只读、按序、免索引”。它不关心下标、不处理边界,只专注取值,写起来简洁,运行时也更安全。
基本写法:一行搞定一维数组
语法统一为: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 (double d : data)或for (boolean b : flags)
二维数组:必须嵌套两层
二维数组本质是“数组的数组”,增强 for 不能一步展开全部元素,必须外层取行、内层取值。
- int[][] grid = {{1, 2}, {3, 4}, {5, 6}};
for (int[] row : grid) {
for (int cell : row) {
System.out.print(cell + " ");
}
System.out.println();
} - 注意:如果某行是
null,内层循环会抛NullPointerException,建议加判空:if (row != null)
字符串怎么遍历?得先转成数组
字符串(String)本身不是数组,也不实现 Iterable,不能直接用于增强 for。
- 按字符遍历:String s = "hello";
for (char c : s.toCharArray()) { System.out.println(c); } - 按单词遍历:先
split(" ")得到String[],再用增强 for:for (String word : s.split(" ")) { ... }
几个关键限制,别踩坑
增强 for 的优雅建立在“只读”前提上。一旦需要改数据、要下标、或数组可能为空,就得额外处理。
-
不能修改基本类型原值:写
for (int x : nums) { x *= 2; }不会影响nums,因为x是副本 -
不支持 null 数组:
if (arr != null) { for (...) { } }是标配防护 -
拿不到当前索引:真需要序号,可加外部计数器:
int i = 0; for (String s : list) { System.out.println(i++ + ": " + s); } -
不支持反向、跳过、中途重置:逻辑复杂时,传统
for (int i = ...)更可控
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











