Java | 配列比較メソッド

Java Java
スポンサーリンク

主な内容の要点

Javaで配列を比べるときは、==ではなく Arrays.equalsArrays.deepEquals を使うのが基本です。==は「同じ配列オブジェクトかどうか」しか見ないので、要素の中身が同じでも false になります。


1. ==演算子での比較

  • ==は「同じオブジェクトを参照しているか」を調べる
  • 配列の中身が同じでも、別々に作った配列なら false
  • 例:
int[] a = {85, 78, 92};
int[] b = {85, 78, 92};
System.out.println(a == b);  // false
Java

2. 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
Java

3. 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の違いを試してみると理解が深まります。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました