Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comparing integer Arrays in Java. Why does not == work?

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 is false. Why does this happen? Should not the comparison evaluate to true?

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!

like image 749
rodrigoalvesvieira Avatar asked Jan 30 '13 22:01

rodrigoalvesvieira


1 Answers

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
like image 95
PermGenError Avatar answered Sep 23 '22 00:09

PermGenError