arrays.mismatch是java 9引入的方法,返回两个数组第一个不等元素的索引;全数组比较时相同返回-1,长度不同时比较公共部分,公共部分相等则返回较短数组长度,某位置不等则返回该索引。

Arrays.mismatch 是 Java 9 引入的实用方法,能直接返回两个数组中**第一个不相等元素的索引**,无需手动遍历,简洁高效。
基本用法:支持多种数组类型
该方法重载丰富,覆盖 int[]、long[]、double[]、Object[] 等常见类型,也支持指定比较范围(起始/结束索引)。最常用的是全数组比较:
- 若两个数组完全相同,返回
-1 - 若长度不同,只比较公共长度部分;若公共部分都相等,返回较短数组的长度(即第一个越界位置)
- 若某位置元素不等,立即返回该索引
常见使用示例
比如比较两个整数数组:
int[] a = {1, 2, 3, 4};int[] b = {1, 2, 5, 4};
int index = Arrays.mismatch(a, b); // 返回 2
再如字符串数组(基于 equals() 比较):
String[] s2 = {"a", "x", "c"};
int idx = Arrays.mismatch(s1, s2); // 返回 1
注意 null 和自定义对象的处理
对于 Object[],元素比较调用 equals() 方法:
- 若任一元素为
null,另一方非null→ 不相等,返回当前索引 - 若双方都为
null→ 视为相等 - 自定义类需正确重写
equals(),否则默认比较引用
限定范围比较:精准定位子段差异
使用带范围参数的重载(如 Arrays.mismatch(int[], int, int, int[], int, int)),可只比对数组某一段:
int[] y = {0, 1, 9, 3, 4};
// 比较 x[2..4] 和 y[2..4] → 返回 2(相对于整个数组的索引)
注意:该重载返回的是**全局索引**,不是子范围内的偏移量。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











