(注意)数组比较方法笔记

AI-摘要
LNotes-AI GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
(注意)数组比较方法笔记
Liuxz1. x == y(引用比较)
本质:比较两个数组变量的内存地址是否相同
核心逻辑:判断是否指向内存中同一个数组对象
适用场景:检查两个数组变量是否引用同一个实例
示例:
1
2
3
4
5
6int[] a = {1,2,3};
int[] b = a; // 指向同一对象
int[] c = {1,2,3};// 新对象,内容相同但地址不同
a == b → true
a == c → false特点:与数组类型无关,仅关注引用是否相同
2. x.equals (y)(数组对象的 equals 方法)
本质:继承自 Object 类的 equals 方法,等价于 x == y
核心逻辑:同样比较引用地址,而非数组内容
适用场景:同 x == y,无实际额外价值
示例:
1
2a.equals(b) → true(同x == y)
a.equals(c) → false(同x == y)特点:数组未重写 equals 方法,行为与 == 完全一致
3. Arrays.equals (x, y)(一维内容比较)
本质:比较两个数组的内容是否完全一致
核心逻辑:
- 先比较数组长度是否相同
- 再逐一比较对应位置元素是否相等
- 对对象数组会调用元素的 equals () 方法
适用场景:一维数组的内容比较(基本类型 / 对象类型均可)
示例:
1
2
3
4
5
6int[] x = {1,2,3};
int[] y = {1,2,3};
int[] z = {1,3,2};
Arrays.equals(x,y) → true(长度+元素全相同)
Arrays.equals(x,z) → false(元素顺序不同)局限性:不支持多维数组(会比较子数组引用而非内容)
4. Arrays.deepEqual (x, y)(深度内容比较)
本质:递归比较数组内容,支持多维数组
核心逻辑:
- 对一维数组:行为同 Arrays.equals ()
- 对多维数组:递归比较每个子数组的内容
适用场景:
- 多维数组的内容比较
- 包含数组类型元素的对象数组比较示例:
1
2
3
4
5
6int[][] m1 = {{1,2}, {3,4}};
int[][] m2 = {{1,2}, {3,4}};
int[][] m3 = {{1,2}, {4,3}};
Arrays.deepEqual(m1,m2) → true(深层内容相同)
Arrays.deepEqual(m1,m3) → false(子数组内容不同)特点:唯一能正确比较多维数组内容的方法
对比总结表
| 方法 | 比较对象 | 适用场景 | 多维数组支持 | 核心特点 |
|---|---|---|---|---|
| x == y | 引用地址 | 判断是否同一对象 | 不支持 | 最基础的内存地址比较 |
| x.equals(y) | 引用地址 | 同 x == y | 不支持 | 与 == 完全等价,无特殊作用 |
| Arrays.equals(x,y) | 一维数组内容 | 比较一维数组是否完全相同 | 不支持 | 只比较表层元素,不递归 |
| Arrays.deepEqual(x,y) | 深层内容 | 多维数组内容比较 | 支持 | 递归比较所有层级的元素内容 |
关键使用原则
- 判断是否同一数组对象 → 用 x == y(或 x.equals (y),但推荐前者)
- 比较一维数组内容 → 用 Arrays.equals (x,y)
- 比较多维数组内容 → 必须用 Arrays.deepEqual (x,y)
- 内容比较时,顺序不同则认为不相等(均为顺序敏感比较)
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果




