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)) を実行します。
出力します。
[ジョン、メアリー、ボブ]
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-
必ず標準ライブラリを先に確認してください。 試してみてください。
System.out.println(Arrays.toString(array));
や、配列が他の配列を要素として含んでいる場合は
System.out.println(Arrays.deepToString(array));