arrays.equals()严格比较两个一维数组内容是否完全一致:要求长度相同、对应元素按equals语义相等,且null安全;它逐个调用元素equals()方法,不比较引用地址。

Java中Arrays.equals()方法可严格比对两个一维数组的元素是否完全一致——要求长度相同、对应位置元素相等(按equals()语义),且对null安全处理。
理解equals方法的核心规则
该方法不是简单比较引用,而是逐个比较元素:
- 若两数组均为
null,返回true - 若仅一个为
null,返回false - 若长度不同,直接返回
false - 否则遍历每个索引,调用元素类型的
equals()方法(如String.equals()、Integer.equals());任一不等即返回false
基本用法示例(含常见类型)
对基本类型数组(如int[])和引用类型数组(如String[]),都适用同一方法:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
int[] c = {1, 2, 4};
System.out.println(Arrays.equals(a, b)); // true
System.out.println(Arrays.equals(a, c)); // false
String[] s1 = {"a", "b", null};
String[] s2 = {"a", "b", null};
String[] s3 = {"a", "b", "c"};
System.out.println(Arrays.equals(s1, s2)); // true(null与null相等)
System.out.println(Arrays.equals(s1, s3)); // false
注意原始类型与包装类型的区别
虽然Arrays.equals(int[], int[])和Arrays.equals(Integer[], Integer[])都可用,但底层逻辑不同:
- 原始类型重载版本(如
int[])直接用==比较值,不调用equals() - 引用类型版本(如
Integer[])调用每个元素的equals()方法,支持null安全比较 - 切勿混用:不能用
Arrays.equals(int[], Integer[])——编译不通过
对比==和Arrays.equals的典型误区
数组变量用==只比较内存地址,毫无意义:
int[] x = {1, 2};
int[] y = {1, 2};
System.out.println(x == y); // false(不同对象)
System.out.println(Arrays.equals(x, y)); // true(内容一致)
即使两个数组内容完全一样,只要不是同一个对象,==永远返回false。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










