Java | toString / deepToString の理解を深めるために、配列構造を図解で可視化

Java Java
スポンサーリンク

では、toString / deepToString の理解を深めるために、配列構造を図解で可視化した教材 を作ります。
初心者でも 「配列の中身がどう格納されているか」「toString と deepToString の違い」 が直感的にわかるように整理します。

1. 1次元配列の表示(超基礎)

コード例

int[] nums = {10, 20, 30};
System.out.println(Arrays.toString(nums));
Java

図解イメージ

nums -> [ 10 | 20 | 30 ]

✅ 出力:

[10, 20, 30]
  • Arrays.toString1次元配列の中身を展開して文字列化
  • System.out.println(nums) は参照を表示 → [I@xxxxxx

2. 2次元配列の表示(基礎〜中級)

コード例

int[][] matrix = {
    {1, 2},
    {3, 4}
};
System.out.println(Arrays.toString(matrix));
System.out.println(Arrays.deepToString(matrix));
Java

配列構造

matrix
 ├─ row0 -> [1, 2]
 └─ row1 -> [3, 4]

出力

  • Arrays.toString(matrix)[[I@xxxx, [I@yyyy] (参照が出る)
  • Arrays.deepToString(matrix)[[1, 2], [3, 4]] (中身を展開)

3. ジャグ配列(行ごとに長さが違う)

コード例

int[][] jagged = {
    {1},
    {2,3},
    {4,5,6}
};
System.out.println(Arrays.deepToString(jagged));
Java

図解

jagged
 ├─ row0 -> [1]
 ├─ row1 -> [2, 3]
 └─ row2 -> [4, 5, 6]

✅ 出力:

[[1], [2, 3], [4, 5, 6]]
  • deepToString は 行ごとに展開して文字列化
  • toString では参照 [I@xxxx のまま

4. 3次元配列の表示(応用)

コード例

int[][][] cube = {
    {
        {1, 2},
        {3, 4}
    },
    {
        {5, 6},
        {7, 8}
    }
};
System.out.println(Arrays.deepToString(cube));
Java

図解

cube
 ├─ layer0
 │    ├─ row0 -> [1,2]
 │    └─ row1 -> [3,4]
 └─ layer1
      ├─ row0 -> [5,6]
      └─ row1 -> [7,8]

✅ 出力:

[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
  • 階層ごとに展開される
  • deepToString でない場合、内側配列は参照 [I@xxxx のまま

5. 混合型配列(Object[])

コード例

Object[] mixed = {
    new int[]{1,2},
    new String[]{"A","B"},
    "Hello"
};
System.out.println(Arrays.deepToString(mixed));
Java

図解

mixed
 ├─ element0 -> int[]{1,2} -> [1,2]
 ├─ element1 -> String[]{"A","B"} -> [A,B]
 └─ element2 -> "Hello"

✅ 出力:

[[1, 2], [A, B], Hello]
  • deepToString は Object 内の配列も自動で展開
  • 文字列はそのまま "Hello" として表示

6. まとめ:toString と deepToString の違い

配列の種類toString 出力deepToString 出力
1次元配列[10, 20, 30][10, 20, 30]
2次元配列[I@xxxx, [I@yyyy][[1, 2], [3, 4]]
ジャグ配列[I@xxxx, [I@yyyy][[1], [2,3], [4,5,6]]
3次元配列[I@xxxx, [I@yyyy][[[1,2],[3,4]],[[5,6],[7,8]]]
Object[] 内配列[I@xxxx, [Ljava.lang.String;@yyyy, Hello][[1,2],[A,B],Hello]

💡 ポイント整理

  1. toString は 1次元配列のみ展開
  2. deepToString は多次元配列も階層的に展開
  3. 空配列や null も deepToString なら分かりやすく表示
  4. Object[] 内にプリミティブ配列がある場合も deepToString が便利

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