arr1 == arr2为什么错?

时间:2014-11-10 11:36:39

标签: java arrays

以下内容:

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 arr2false

这不是真的吗?

4 个答案:

答案 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));