null配列- 配列の一部だけ表示(部分表示)
- 配列と
Listの比較
1. null 配列
int[] a = null;
System.out.println(a); // → null
System.out.println(Arrays.toString(a)); // → NullPointerException
System.out.println(Arrays.deepToString(new Object[]{a})); // → [null]
JavaASCII 図イメージ:
a: null
解説:
println(a)はnullと表示するだけで安全Arrays.toString(a)はnullに直接渡すと NPEdeepToStringに Object 配列でラップすると安全に[null]と表示できる
2. 部分表示(先頭 N 個だけ)
int[] big = {1,2,3,4,5,6,7,8,9,10};
int N = 5;
// 先頭 N 個だけ表示
int[] firstN = Arrays.copyOfRange(big, 0, N);
System.out.println(Arrays.toString(firstN)); // [1,2,3,4,5]
JavaASCII 図イメージ:
big: [1,2,3,4,5,6,7,8,9,10]
firstN -> [1,2,3,4,5]
- 大きな配列を全部表示すると読みにくいときに便利
3. 配列 vs List の比較
import java.util.Arrays;
import java.util.List;
public class ArrayListCompare {
public static void main(String[] args) {
int[] arr = {10,20,30};
List<Integer> list = Arrays.asList(10,20,30);
System.out.println("配列: " + Arrays.toString(arr)); // [10, 20, 30]
System.out.println("リスト: " + list); // [10, 20, 30]
}
}
JavaASCII 図イメージ:
配列 arr: [10, 20, 30] -- Arrays.toString で展開
リスト list: [10, 20, 30] -- println でそのまま中身が見える
ポイント:
- 配列は println だけでは中身が出ない場合がある
- List は println で中身が自動表示される
- 多次元配列の場合は
Arrays.deepToStringが必要だが、List の List の場合はList.toString()で自動展開される
4. まとめ:視覚での比較(ASCII 図)
[配列]
1次元: println -> REF toString -> [v1,v2,...] deepToString -> [v1,v2,...]
2次元: println -> REF toString -> [REF_row0,REF_row1] deepToString -> [[v,v],[v,v]]
null: println -> null toString -> NPE deepToString -> [null]
部分: Arrays.copyOfRange + toString -> [v1,v2,...] (先頭だけ表示)
[List]
List<Integer> list: println -> [v1,v2,...] (1次元も2次元も自動展開)
5. コピペで確認コード(部分表示 + null + List)
import java.util.Arrays;
import java.util.List;
public class ExtendedDemo {
public static void main(String[] args) {
// null 配列
int[] a = null;
System.out.println("println(a): " + a);
System.out.println("deepToString(a): " + Arrays.deepToString(new Object[]{a}));
// 部分表示
int[] big = {1,2,3,4,5,6,7,8,9,10};
int N = 5;
int[] firstN = Arrays.copyOfRange(big, 0, N);
System.out.println("firstN: " + Arrays.toString(firstN));
// 配列 vs List
int[] arr = {10,20,30};
List<Integer> list = Arrays.asList(10,20,30);
System.out.println("配列: " + Arrays.toString(arr));
System.out.println("リスト: " + list);
}
}
Java期待出力(例):
println(a): null
deepToString(a): [null]
firstN: [1, 2, 3, 4, 5]
配列: [10, 20, 30]
リスト: [10, 20, 30]
💡ポイント
nullの扱いは慎重に- 大きな配列は部分表示で見やすく
- List は1次元でも多次元でも
toString()で中身が見える - 配列は
toString/deepToStringを使って階層ごとに表示する
