加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java:clone()和相等检查

发布时间:2020-12-15 05:18:57 所属栏目:Java 来源:网络整理
导读:也许我不明白clone()是如何工作的.返回值不应该等于调用者吗? int[] nums = new int[] {0,1,2};int[] list = nums.clone();nums.equals(list); //returns false. Why?for (int ket = 0; ket list.length; ket++) { System.out.println(list[ket] == nums[ke
也许我不明白clone()是如何工作的.返回值不应该等于调用者吗?

int[] nums = new int[] {0,1,2};
int[] list = nums.clone();
nums.equals(list); //returns false. Why?

for (int ket = 0; ket < list.length; ket++) {

       System.out.println(list[ket] == nums[ket]); //prints out true every time
}

list == nums //false

解决方法

因为数组的equals实现与Object相同

public boolean equals( Object o ) { 
   return this == o;
}

?这也是question

在你测试的两种情况下,这都是错误的.原始和副本的参考值是两个不同的对象(具有相同的值但仍然是不同的对象引用).

clone方法的作用是创建给定对象的副本.创建新对象时,其引用与原始对象不同.这就是为什么equals和==产生错误的原因.

如果你想测试两个数组的相等性,可以在这里做mmyers:Arrays.equals():

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读