では、これまで作ってきた 配列の文字列表示を中心に、初心者向けに単元別に整理した練習帳 を作ります。
ポイントは:
- 単元ごとに 概念 → サンプルコード → 練習問題 の順で構成
- 初心者が読みやすく、手を動かせるように 例題・出力例付き
- 難易度は 基礎 → 応用 → 実務風 の順
1. 配列の基本と println の落とし穴
概念
- 配列はオブジェクトなので
System.out.println(array)は 中身ではなく参照 を表示する - 参照表示例:
[I@15db9742
例
int[] nums = {1, 2, 3};
System.out.println(nums); // 出力例: [I@xxxxxx
Java2. 1次元配列の表示:Arrays.toString
概念
- 1次元配列の中身を確認するには
Arrays.toString(array)を使う - 文字列として
[1, 2, 3]の形式で出力される
例
import java.util.Arrays;
int[] nums = {1, 2, 3};
System.out.println(Arrays.toString(nums)); // [1, 2, 3]
Java練習問題
double[] prices = {10.5, 20.0, 30.5};を表示String[] fruits = {"apple","banana"};を表示
3. 多次元配列の表示:Arrays.deepToString
概念
- 2次元以上の配列は
Arrays.toStringでは 子配列が参照で表示 される Arrays.deepToString(array)を使うと ネストした配列も展開 される
例
int[][] matrix = {{1,2},{3,4}};
System.out.println(Arrays.toString(matrix)); // [[I@xxxxxx, [I@yyyyyy]
System.out.println(Arrays.deepToString(matrix)); // [[1, 2], [3, 4]]
Java練習問題
- 2×3 の配列を deepToString で表示
- ジャグ配列
int[][] jagged = {{1},{2,3},{}}を表示
4. 配列の空・null の扱い
概念
- 空配列 →
[] - null 配列 →
Arrays.toString(null)は NullPointerException - 安全に表示するには null チェックが必要
例
int[] empty = new int[0];
System.out.println(Arrays.toString(empty)); // []
int[] arr = null;
System.out.println(arr == null ? "null" : Arrays.toString(arr)); // null
Java練習問題
- 空の
String[]を表示 - null の int 配列を安全に表示
5. オブジェクト配列の表示
概念
- オブジェクト配列を toString / deepToString で表示すると、要素の toString() が呼ばれる
- クラスに toString() をオーバーライドすると分かりやすく表示できる
例
class Person {
String name;
Person(String n){ name=n; }
public String toString(){ return name; }
}
Person[] people = { new Person("Alice"), new Person("Bob") };
System.out.println(Arrays.toString(people)); // [Alice, Bob]
Java練習問題
- Person クラスを作り、配列を表示
- Object 配列に String, Integer を混在させて表示
6. 配列の一部だけ表示
概念
Arrays.copyOfRange(array, from, to)で部分配列を作成して表示- 大きな配列の一部だけをログ出力する場合に便利
例
int[] nums = {1,2,3,4,5};
int[] head = Arrays.copyOfRange(nums, 0, 3);
System.out.println(Arrays.toString(head)); // [1, 2, 3]
Java練習問題
- 配列
{10,20,30,40,50}の最初の 2 要素を表示 - 2次元配列の最初の行だけを表示
7. 実務での便利ユーティリティ
概念
- 配列の種類(1次元、2次元、プリミティブ、オブジェクト)を気にせず
- 安全に文字列化 してログに出力できる関数を作る
例
public static String safeArrayToString(Object obj) {
if(obj == null) return "null";
if(obj instanceof Object[]) return Arrays.deepToString((Object[])obj);
if(obj instanceof int[]) return Arrays.toString((int[])obj);
// 他の基本型も同様
return obj.toString();
}
Java練習問題
- safeArrayToString を使って 1次元 int 配列を出力
- 2次元 String 配列を出力
- null を出力
- Object 配列(String, Integer 混在)を出力
8. 高難度・応用問題
概念
- 多次元配列、ジャグ配列、3次元以上の配列も同じ原理で出力可能
- 実務では、ユーザー入力やファイルから読み込んだ配列を表示する際に便利
練習問題
- 3次元配列
int[][][]を deepToString で出力 - ジャグ配列の各行をループで個別に表示
- Object 配列に null を混ぜて safeArrayToString で表示
- 配列を文字列化して CSV 形式に変換
- ユーザー名配列をログ形式で出力(例:
Users: [taro, hanako, jiro]) - 商品カテゴリ多次元配列を deepToString で出力
練習帳まとめ(単元別)
| 単元 | 主な内容 | サンプルコード | 練習問題 |
|---|---|---|---|
| 配列の基本 | println では中身が見えない | System.out.println(nums); | 1,2 |
| 1次元配列 | Arrays.toString | Arrays.toString(nums) | 1,2 |
| 多次元配列 | Arrays.deepToString | Arrays.deepToString(matrix) | 3,4 |
| 空・null 配列 | 空配列 [] / null 安全出力 | null チェック | 5,6 |
| オブジェクト配列 | toString() のオーバーライド | Person 配列表示 | 7,8 |
| 部分配列 | Arrays.copyOfRange | Arrays.copyOfRange(nums,0,3) | 9,10 |
| ユーティリティ | safeArrayToString | 汎用関数例 | 11〜14 |
| 高難度・応用 | 3次元・ジャグ配列・ログ用 | deepToString / ループ | 15〜20 |
💡 補足
- 初心者はまず 1次元 → 2次元 → 部分配列 → ジャグ配列 → オブジェクト配列 の順に理解するとスムーズ
- 実務では safeArrayToString のような汎用関数を作っておくと便利

