以下内容:
class ArrayCompare
{
public static void main (String[] args)
{
int []arr1 = {1, 2, 3, 4, 5};
int []arr2 = {1, 2, 3, 4, 5};
System.out.println("arr1 == arr2 is " + (arr1 == arr2));
}
}
返回arr1 == arr2 is false
这是为什么?为什么arr1 Equals to arr2
为false
。
这不是真的吗?
答案 0 :(得分:9)
不,不应该是真的。您正在比较两个不同对象的引用,因此==
应该返回false。
如果您想比较两个数组的内容,请使用Arrays.equals(arr1,arr2)
。
答案 1 :(得分:0)
Java眼睛不是人眼。
虽然内容相同,但由于两个引用都指向差异对象,==
返回false。
System.out.println(Arrays.equals(arr1, arr2)); // prints true
答案 2 :(得分:0)
您正尝试使用==
比较两个不同对象的引用,因此它返回false。要比较内容使用:
Arrays.equals(arr1, arr2);
另外,可能值得阅读以下Java == vs .equals() confusion
答案 3 :(得分:0)
arr1.equals(arr2)
与arr1 == arr2
相同,即它是相同的数组,即引用(指针)是否相同。
使用:
Arrays.equals(arr1, arr2);
比较数组的内容。如果两个指定的int数组彼此相等,则返回true。 所以,使用:
System.out.println("arr1 == arr2 is " + Arrays.equals(arr1, arr2));