Java遍历一维数组求最值需先校验空数组,再用首元素初始化max/min;基础for循环支持索引记录,增强for更简洁,Stream API语义清晰但性能略低。

在 Java 中遍历一维数组并找出最大值和最小值,核心在于初始化、比较逻辑和边界处理。不需要额外工具类,用基础 for 循环或增强 for 循环就能高效完成。
初始化最大值与最小值要合理
不能简单设为 0 或固定数,否则会出错(比如全为负数时,初始值 0 就比所有元素大)。推荐用数组第一个元素初始化:
- 先判断数组是否为空,避免
ArrayIndexOutOfBoundsException - 用
arr[0]同时赋值给max和min - 后续从索引 1 开始遍历,减少一次无意义比较
用普通 for 循环更灵活可控
适合需要索引的场景(比如同时记录最大/最小值的位置):
- 声明两个变量
max和min,初始值为arr[0] - 声明
maxIndex和minIndex记录下标,初始为 0 - 循环中逐个比较:大于当前
max就更新;小于当前min就更新 - 注意相等时不更新索引,可保留首次出现位置
增强 for 循环写法更简洁
如果只关心数值本身,不需索引,增强 for 更直观:
立即学习“Java免费学习笔记(深入)”;
- 语法是
for (int num : arr),自动遍历每个元素 - 仍需提前校验数组非空,再用首元素初始化
max/min - 循环体内只做数值比较和赋值,代码行数少、易读
- 但无法获取当前元素在原数组中的位置
小技巧:一行代码用 Stream(Java 8+)
追求简洁且项目支持 Java 8 及以上,可用 Stream API:
int max = Arrays.stream(arr).max().orElseThrow();int min = Arrays.stream(arr).min().orElseThrow();- 注意
orElseThrow()处理空数组异常,也可用orElse(Integer.MAX_VALUE)等兜底 - 性能略低于传统循环,但语义清晰,适合简单逻辑或教学演示
不复杂但容易忽略的是数组为空的边界情况——加上一句 if (arr == null || arr.length == 0) 判断,能避免多数运行时异常。



















