所以我在做复习时,遇到了这个我不太确定的问题。
考虑以下代码段:
int[] A = {1,2,3};
int[] B = {1,2,3};
int[] C = A;
执行此代码后,以下哪个表达式的计算结果为 true?
I. A.equals (B)
II. A == B
III. A ==C
我只是
仅限 II
仅限 III
仅限 I 和 III
一、二、三
我以为只有我一个,但是我的一个同学说只有III一个。
可以解释一下吗?
感谢您的帮助。
最佳答案
答案在上面@J L 的链接问题中:
Arrays.equals(array1, array2) works as you would expect (i.e. compares content), array1.equals(array2) falls back to Object.equals implementation, which in turn compares identity, and thus better replaced by == (for purists: yes I know about null).
简单地说,您将 C 设置为等于 A,因此这就是 A == C 成立的原因。您本质上执行的是 Object.equals
。虽然表面上看 A.equals(B)
是正确的,但它们并不是因为 Object.equals
背后的内部原理。
所以你的 friend 是对的。
关于java - java数组上的代码段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22515293/