也许我不明白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():