java - java数组上的代码段

标签 java

所以我在做复习时,遇到了这个我不太确定的问题。

考虑以下代码段:

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/

相关文章:

java - 如何纠正这个查询?

java - 实例不工作?

java - 如何在 RxJava 中将 AbstractOnSubscribe 转换为具有反压支持的 Operator?

java - Android/Java - 在我绘制的 Canvas 上放大

java - itext Pdf 表格单元格中的居中文本

java - 在 Android 中后台访问麦克风

java - 尝试用 Mockito 模拟 IntConsumer 失败

java - 我想在 android 应用程序中实现 AsyncTask 并行执行器

java - 有没有办法让系统关闭按钮作为 javafx 按钮?

java - 用 joda time 计算平均时间