Arrays.equals()は、配列の1階層の値しか一致チェックしません。また、配列のequals()は中身のチェックはせず、インスタンスの一致の判定をします。そのため、多次元配列を渡してもうまく判定できません。
多次元配列の値の一致チェックをしたい場合には、Arrays.deepEquals()を使ってください。
詳細はjavadoc等を確認ください
Like!
Arrays.equals()のことなのですが自分で調べても解決できませんでした。どなたかご教授お願いいたします。
①ではfalseになるのに②ではtrueになる違いがわかりません。
よろしくお願いいたします🙇♀️
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
}
}
Arrays.equals()は、配列の1階層の値しか一致チェックしません。また、配列のequals()は中身のチェックはせず、インスタンスの一致の判定をします。そのため、多次元配列を渡してもうまく判定できません。
多次元配列の値の一致チェックをしたい場合には、Arrays.deepEquals()を使ってください。
詳細はjavadoc等を確認ください
@NotK
Questioner