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

做~自己de王妃 提交于 2019-11-28 00:14:37

use Arrays.equals(arr1, arr2) method. == 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

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

If you use == operator with Object you are checking if two references point to the same object. If you use == operator with primitive types (int, long, boolean...) you are cheking if they have 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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!