LoginSignup
NotK
@NotK (n k)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

java Arrays.equals()の質問です

Q&A

Arrays.equals()のことなのですが自分で調べても解決できませんでした。どなたかご教授お願いいたします。
①ではfalseになるのに②ではtrueになる違いがわかりません。
よろしくお願いいたします🙇‍♀️

M5_10.java


import java.util.Arrays;

public class M5_10 {

    public static void main(String[] args) {
        int[][] arrayA = { { 1, 2 }, { 1, 2 }, { 1, 2 } };
        int[][] arrayR = { { 1, 2 }, { 1, 2 }, { 1, 2 } };
        System.out.println(arrayA == arrayR);
        System.out.println(arrayA.equals(arrayR));

        System.out.println(Arrays.equals(arrayA, arrayR));//①false
        int[][] arrayB = arrayA.clone();

        int total = 0;
        System.out.println(arrayA == arrayB);
        System.out.println(arrayA.equals(arrayB));
        System.out.println(arrayA.equals(arrayA));
        System.out.println(Arrays.equals(arrayA, arrayB));

        int[] bb = { 5 };
        int[] ee = { 5 };
        System.out.println(bb == ee);
        System.out.println(bb.equals(ee));
        System.out.println(Arrays.equals(bb,ee));//②true
    }

}
0

1Answer

Arrays.equals()は、配列の1階層の値しか一致チェックしません。また、配列のequals()は中身のチェックはせず、インスタンスの一致の判定をします。そのため、多次元配列を渡してもうまく判定できません。

多次元配列の値の一致チェックをしたい場合には、Arrays.deepEquals()を使ってください。

詳細はjavadoc等を確認ください

0

Comments

  1. @NotK

    Questioner
    返信遅れてしまい、すいません!解決しました、ありがとうございました!!

Your answer might help someone💌