Comparing integer Arrays in Java. Why does not == work?
30,761
Solution 1
Use Arrays.equals(arr1, arr2) method.
The ==
operator just checks if two references point to the same object.
Test:
int[] a = {1, 2, 3};
int[] b = a;
System.out.println(a == b); // returns true as b and a refer to the same array
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.equals(a, b)); //returns true as a and b are meaningfully equal
Solution 2
No. ==
compares numerical (or boolean) values, or references, only.
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.21
You're probably looking for the Arrays.equals (a,b)
method
Author by
rodrigoalvesvieira
I am a software engineer who writes mostly Ruby, Go and C++.
Updated on August 08, 2022Comments
-
rodrigoalvesvieira over 1 year
I'm learning Java and just came up with this subtle fact about the language: if I declare two integer Arrays with the same elements and compare them using
==
the result isfalse
. Why does this happen? Should not the comparison evaluate totrue
?public class Why { public static void main(String[] args) { int[] a = {1, 2, 3}; int[] b = {1, 2, 3}; System.out.println(a == b); } }
Thanks in advance!
-
e-info128 over 7 yearsHowto find difrerences without using a loop?