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

前端 未结 3 2004
梦毁少年i
梦毁少年i 2020-12-06 12:21

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 == t

相关标签:
3条回答
  • 2020-12-06 13:04

    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

    0 讨论(0)
  • 2020-12-06 13:04

    If you use == operator with Object you are comparing the references, not the values.
    If you use == operator with primitive types (int, long, boolean...) you are checking 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
    

    You can use the Arrays.equals(array1, array2) method.

    0 讨论(0)
  • 2020-12-06 13:20

    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
    
    0 讨论(0)
提交回复
热议问题