Comparing integer arrays in Java. Why does not it work?

I am 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 with ==

, the result is false

. Why is this happening? Shouldn't the comparison be compared with 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!

+3


source to share


3 answers


use the Arrays.equals (arr1, arr2 ) method . The operator ==

simply checks if the 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

      

+28


source


Not. ==

compares only numeric (or boolean) values ​​or references.

http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.21



You are probably looking for the method Arrays.equals (a,b)

+1


source


If you use == operator with Object, you are checking if two references point to the same object. If you use the == operator with primitive types (int, long, boolean ...) you are looking to see if they have the same values.

int[] a = {1, 2, 3};
int[] b = {1, 2, 3};

System.out.println(a == b); //return false;

System.out.println(a[0] == b[0]); //return true;



String[] a1 = {"Cat", "Dog", "Mouse"};
String[] b2 = {"Cat", "Dog", "Mouse"};

System.out.println(a1 == b1); //return false;

System.out.println(a1[0] == b1[0]); //return false; Because String are Object

      

0


source







All Articles