Arrays.equals()是Java中严格比较两个数组内容是否完全相同的方法,要求长度、顺序、元素值及null状态均一致,且对基本类型和引用类型均有重载支持。

Arrays.equals() 是 Java 中用于严格比较两个数组内容是否完全相同的最常用方法。它要求两个数组不仅元素值相同,而且顺序、长度、类型(对基本类型数组)都必须一致,才算相等。
基本用法:支持所有数组类型
该方法是重载的,适用于任意类型的数组(包括基本类型和引用类型):
- 对基本类型数组(如
int[]、double[]),逐个比较每个元素的值(注意:double和float使用Double.equals()/Float.equals()处理 NaN) - 对引用类型数组(如
String[]、Object[]),使用Objects.equals(a[i], b[i])比较每个位置的元素(自动处理null) - 若任一数组为
null,仅当两个都为null时返回true;一个为null另一个非null则直接返回false
必须满足的四个条件才返回 true
两个数组要被判定为“内容完全相同”,需同时满足:
- 长度相等(
a.length == b.length) - 对应索引位置的元素值相等(对基本类型是值相等,对对象是
Objects.equals()相等) - 元素顺序完全一致(不考虑集合去重或排序)
- 不能一个是
null、另一个不是null
常见易错点提醒
直接用 == 或 equals() 比较数组引用,永远得不到内容比较结果:
-
arr1 == arr2→ 比较的是内存地址,即使内容一样也返回false -
arr1.equals(arr2)→ 数组类未重写equals(),实际调用的是Object.equals(),仍是地址比较 -
Arrays.equals(arr1, arr2)→ 正确方式,语义清晰、行为确定
简单示例
// 基本类型int[] a = {1, 2, 3};int[] b = {1, 2, 3};System.out.println(Arrays.equals(a, b)); // true
// 引用类型(含 null)String[] x = {"a", null, "c"};String[] y = {"a", null, "c"};System.out.println(Arrays.equals(x, y)); // true
// 长度不同或顺序不同 → falseArrays.equals(new int[]{1,2}, new int[]{1,2,3}); // falseArrays.equals(new int[]{1,2,3}, new int[]{3,2,1}); // false
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











