配列の表示方法(println / toString / deepToString)に関する 間違い探し(バグ修正)20問 を、
初心者向けに「どこがバグか → 正しい書き方」にフォーカスして作成します。
問題 1
int[] nums = {1, 2, 3};
System.out.println(nums);
Java❌ どこが間違い?
配列を直接 println している。
✅ 修正例
System.out.println(Arrays.toString(nums));
Java問題 2
int[] data = {5, 10, 15};
System.out.println(toString(data));
Java❌ どこが間違い?
toString は単独で呼べない。
✅ 修正例
System.out.println(Arrays.toString(data));
Java問題 3
String[] names = {"A", "B"};
System.out.println(Arrays.deepToString(names));
Java❌ 間違い?
2次元以上ではないのに deepToString を使っている。
⚠ 問題ではないが通常は toString を使う
System.out.println(Arrays.toString(names));
Java問題 4
int[][] table = {{1,2},{3,4}};
System.out.println(Arrays.toString(table));
Java❌ 間違い?
多次元配列なのに toString を使っている → 中身が表示されない。
✅ 修正例
System.out.println(Arrays.deepToString(table));
Java問題 5
System.out.println(Arrays.toString(10));
Java❌ 間違い?
10 は配列ではない。
✅ 修正例
int[] a = {10};
System.out.println(Arrays.toString(a));
Java問題 6
int[] a = new int[3];
System.out.println(Arrays.toString());
Java❌ 間違い?
引数なしで toString() は呼べない。
✅ 修正
System.out.println(Arrays.toString(a));
Java問題 7
int[][] m = {{1,2},{3,4}};
System.out.println(Arrays.toString(m[0][1]));
Java❌ 間違い?
m[0][1] は数値で配列ではない。
✅ 修正
System.out.println(m[0][1]);
Java問題 8
int[] arr = {1,2,3};
String s = arr.toString();
System.out.println(s);
Java❌ 間違い?
配列の toString() はメモリアドレスを返す。
❌ 実行結果例
[I@75a1cd57
✅ 修正
String s = Arrays.toString(arr);
Java問題 9
int[][] arr = {{1,2},{3,4}};
String s = arr.toString();
System.out.println(s);
Java❌ 間違い
多次元配列にも toString() を使っている。
❌ 出力はアドレス
[[I@31befd9f
✅ 修正
String s = Arrays.deepToString(arr);
Java問題 10
char[] cs = {'a', 'b', 'c'};
System.out.println(cs.toString());
Java❌ 間違い
char 配列にも toString() は使えない。
⭐ char 配列は println がそのまま文字列として表示される
⭐ 正しい例
System.out.println(cs);
Java問題 11
int[] a = {1,2,3};
System.out.println(Arrays.deepToString(a));
Java❌ 間違い?
一次元配列で deepToString を使う必要はない。
⚠ 決定的なバグではないが冗長
System.out.println(Arrays.toString(a));
Java問題 12
int[][][] cube = new int[2][2][2];
System.out.println(Arrays.toString(cube));
Java❌ 間違い
多次元配列なのに deepToString を使っていない。
✅ 修正
System.out.println(Arrays.deepToString(cube));
Java問題 13
String[][] data = {{"A","B"},{"C","D"}};
System.out.println(toString(data));
Java❌ 間違い?
toString はクラスメソッドではない。
✅ 修正
System.out.println(Arrays.deepToString(data));
Java問題 14
int[] a = null;
System.out.println(Arrays.toString(a));
Java❌ 間違い?
null を渡すと null と表示されるが、意図せず null の可能性あり。
✔ 実行は可能だが、安全対策が必要
if (a != null) {
System.out.println(Arrays.toString(a));
}
Java問題 15
int[] a = {1, 2, 3};
System.out.println(Arrays.toString(a[1]));
Java❌ 間違い
a[1] は数値であって配列ではない。
正しい出力方法
System.out.println(a[1]);
Java問題 16
System.out.println(Arrays.toString(new int[][] {{1,2}}));
Java❌ 間違い
多次元配列 + toString → 中身が見えない。
正しくは
System.out.println(Arrays.deepToString(new int[][] {{1,2}}));
Java問題 17
double[] d = {1.1, 2.2};
String result = d.toString();
Java❌ 間違い
配列の toString を使っている。
正しくは
String result = Arrays.toString(d);
Java問題 18
boolean[][] flags = {{true, false}, {false, true}};
String s = Arrays.toString(flags);
Java❌ 間違い
多次元配列は deepToString を使うべき。
正しいコード
String s = Arrays.deepToString(flags);
Java問題 19
String[] items = {"x", "y"};
System.out.println(items);
Java❌ 間違い
一次元配列を println → アドレス表示
正しいコード
System.out.println(Arrays.toString(items));
Java問題 20
long[] l = {100L, 200L};
System.out.println(Arrays.deepToString(l));
Java❌ 間違い
一次元配列に deepToString は不要(動くが冗長)
推奨コード
System.out.println(Arrays.toString(l));
Java