You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何数组调用equals()时调用Object类方法而非Arrays类方法?

数组调用equals()为何执行Object类方法而非Arrays类方法?

先看你给出的代码示例:

int[] arr={1,2,3};
int[] arr1={1,2,3};
System.out.print(arr.equals(arr1));//输出false

核心原因:

  • Java中的数组本质是对象,但所有数组类型(比如int[]、String[]这类)都是JVM在底层隐式生成的类,它们直接继承自Object类,并且没有重写equals()方法。所以当你调用arr.equals(arr1)时,实际执行的是Object类的equals()逻辑——这个方法只判断两个对象的内存地址是否相同。因为arr和arr1是两个独立创建的数组对象,内存地址不一样,所以返回false。

  • 而Arrays.equals()是Java提供的静态工具方法,专门用来对比数组的内容是否一致:它会遍历两个数组的每一个元素,逐一比较值是否相等,所以如果换成Arrays.equals(arr, arr1),就会返回true。

额外补充:如果是引用类型数组(比如String[]),Arrays.equals()会调用每个元素自身的equals()方法做比较;如果要处理多维数组的内容对比,得用Arrays.deepEquals()方法。

内容的提问来源于stack exchange,提问作者Ajay Subramaniam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:42:01