How does an array's equal method work?
Hey I'm currently studying for a java final and I am befuddled by a simple equals
method.
The question given is
"Given the following array declarations, what does the following print"
and I thought it would be true, false, true however after copy and pasting the code it reveals the answer is false, false, true.
I understand that the ==
only works when they are the same instance of the object but I do not understand why the first on is false. I tried finding the method in the array api but could not find one with the same arguments.
Forgive me if this is obvious, I've been up late the past couple nights studying and am quite jaded on caffeine at the moment.
int[] d = { 1, 2, 3 };
int[] b = { 1, 2, 3 };
int[] c = d;
System.out.println(d.equals(b));
System.out.println(d == b);
System.out.println(d == c);
Solution 1:
Basically, array types don't override equals
to provide value equality... so you end up with the default implementation in Object, which is reference equality.
For value equality in arrays (i.e. equal elements in the same order), use the static methods in the Arrays
class.
Solution 2:
Plain Java arrays (ie, not ArrayList or some such) do not, themselves, implement equals
, but rather use the implementation in Object
. This is basically just an address compare.
(But note that java.util.Arrays implements some static equals
methods for generic arrays.)
Solution 3:
An Array is an Object and it doesn't override Object.equals(), so the standard implementation of Object.equals() applies. array.equals(something)
is true if and only if array == something
.
Solution 4:
Arrays implicitly extend Object
class. So, your equals
method is inherited from there. The default implementation of equals
method just checks the identity equality, i.e. is the same as ==
.