Javaの配列を印刷する一番簡単な方法は?

Javaでは、配列はtoString()をオーバーライドしないので、配列を直接印刷しようとすると、className + '@' + Object.toString()で定義された配列のhashCodeの16進数が表示されます。

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

しかし、通常は [1, 2, 3, 4, 5] のようなものが必要になるでしょう。一番簡単な方法は何でしょうか?入力と出力の例を挙げてみましょう。

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
ソリューション

Java 5以降では,配列の中の配列に対して,Arrays.toString(arr)または[Arrays.deepToString(arr)][2]を使うことができます.なお,Object[]バージョンでは,配列内の各オブジェクトに対して.toString()を呼び出しています.出力は,あなたが求めている通りの方法で装飾されています.

  • 単純な配列。

      String[] array = new String[] {"John", "Mary", "Bob"};
      System.out.println(Arrays.toString(array)) を実行します。

出力します。

    [ジョン、メアリー、ボブ]
  • Nested Array:

      String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
      System.out.println(Arrays.toString(deepArray));
      //出力します。[[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]]となります。
      System.out.println(Arrays.deepToString(deepArray));

出力します。

    [[John, Mary], [Alice, Bob]] です。
  • double 配列です。

      double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
      System.out.println(Arrays.toString(doubleArray));

出力します。

    [7.0, 9.0, 5.0, 1.0, 3.0 ]
  • int 配列。

      int[] intArray = { 7, 9, 5, 1, 3 };
      System.out.println(Arrays.toString(intArray));

出力します。

    [7, 9, 5, 1, 3 ]

[2]: https://docs.oracle.com/javase/9/docs/api/java/util/Arrays.html#deepToString-java.lang.Object:A-

解説 (9)

必ず標準ライブラリを先に確認してください。 試してみてください。

System.out.println(Arrays.toString(array));

や、配列が他の配列を要素として含んでいる場合は

System.out.println(Arrays.deepToString(array));
解説 (3)

Java 1.4を使用している場合は、代わりに次のようにします。

System.out.println(Arrays.asList(array));

(もちろん、1.5+でも動作します)。

解説 (1)