8

私はJavaを学んでいて、言語に関するこの微妙な事実を思いつきました:同じ要素を持つ2つの整数配列を宣言し==、結果を使用してそれらを比較するとfalse. なぜこれが起こるのですか?比較は に評価されるべきではありません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);
    }

}

前もって感謝します!

4

3 に答える 3

34

Arrays.equals(arr1, arr2 ) メソッドを使用します。

== オペレーターは、2 つの参照が同じオブジェクトを指しているかどうかをチェックするだけです。

テスト:

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
于 2013-01-30T22:19:54.533 に答える
1

No.==は、数値 (またはブール) 値、または参照のみを比較します。

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

あなたはおそらくArrays.equals (a,b)メソッドを探しています

于 2013-01-30T22:24:17.183 に答える
0

==演算子を使用すると、ではなく参照Objectが比較されます。プリミティブ型 ( 、、...)で演算子を 使用する場合、それらが同じ値を持っているかどうかを確認しています。
==intlongboolean

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

メソッドを使用できますArrays.equals(array1, array2)

于 2013-01-31T00:07:33.873 に答える