数组的平等方法如何工作?

Eri*_*rik 5 java

嘿,我正在学习Java决赛,我被一种简单的equals方法弄糊涂了.

给出的问题是

"鉴于以下数组声明,以下打印是什么"

并且我认为这是真的,错误的,但是在复制和粘贴代码后它会显示答案是错误的,错误的,真实的.

我明白,==当它们是对象的同一个实例时,它才有效,但我不明白为什么第一个是错误的.我尝试在数组api中找到方法,但找不到具有相同参数的方法.

请原谅我,如果这是显而易见的,我在学习过去的几个晚上一直很晚,而且现在对咖啡因感到厌倦.

int[] d = { 1, 2, 3 };
int[] b = { 1, 2, 3 };
int[] c = d;
System.out.println(d.equals(b));
System.out.println(d == b);
System.out.println(d == c);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 16

基本上,数组类型不会覆盖equals以提供值相等...所以最终得到Object中的默认实现,即引用相等.

对于数组中的值相等(即相同顺序的相等元素),请使用类中的静态方法Arrays.