主な内容の要点
Javaで配列を比べるときは、==ではなく Arrays.equals や Arrays.deepEquals を使うのが基本です。==は「同じ配列オブジェクトかどうか」しか見ないので、要素の中身が同じでも false になります。
1. ==演算子での比較
==は「同じオブジェクトを参照しているか」を調べる- 配列の中身が同じでも、別々に作った配列なら
false - 例:
int[] a = {85, 78, 92};
int[] b = {85, 78, 92};
System.out.println(a == b); // false
Java2. Arrays.equals メソッド
- 配列の 要素の値がすべて同じか を調べる
- 要素数や順番も一致している必要がある
- 例:
int[] a = {85, 78, 92};
int[] b = {85, 78, 92};
System.out.println(Arrays.equals(a, b)); // true
Java- 順番が違うと
false
int[] a = {85, 78, 92};
int[] b = {85, 92, 78};
System.out.println(Arrays.equals(a, b)); // false
Java3. Arrays.deepEquals メソッド
- 多次元配列(2次元以上)を比較するときに使う
Arrays.equalsだと、要素が配列の場合に「同じ参照かどうか」しか見ないため正しく比較できないdeepEqualsなら、配列の中の配列まで中身を比較してくれる- 例:
int[][] a = {{10, 8}, {9, 14}};
int[][] b = {{10, 8}, {9, 14}};
System.out.println(Arrays.deepEquals(a, b)); // true
Java初心者へのアドバイス
- 1次元配列 →
Arrays.equals - 多次元配列 →
Arrays.deepEquals ==は使わない(参照比較になるから)
つまり「配列の中身を比べたいときは Arrays.equals / Arrays.deepEquals を使う」と覚えておけば安心です。
こうした違いを理解すると、配列の比較で「なぜfalseになるの?」という混乱を防げます。次は実際にコードを書いて、==とequalsの違いを試してみると理解が深まります。
