Why are these two arrays not equal?

public static void main(String[] args) 
{
    char [] d = {'a','b','c','d'};
    char [] e = {'d','c','b','a'};
    Arrays.sort(d);
    Arrays.sort(e);
    System.out.println(e);           //console : abcd
    System.out.println(d);           //console : abcd
    System.out.println(d.equals(e)); //console : false
}

Why are arrays unequal? I probably missed something, but it drove me crazy. Isn't that a result that should be true? And yes, I imported java.util.Arrays.

+4
source share
2 answers

Shouldn't there be a result?

No. You call equalsin two different array references. Arrays are not overridden equals, so you get referential equality. Links are not equal, so it returns false ...

To compare values ​​in arrays, use Arrays.equals(char[], char[]).

System.out.println(Arrays.equals(d, e));
+15
source

Arrays are not overridden Object#equals(). Using:

Arrays.equals(d, e);

instead, perform a comparison based on the values.

:

Arrays.equals , , . . . Arrays.deepEquals .

+11

All Articles