Java | null や部分表示、配列と List の比較などを ASCII 図で視覚化

Java Java
スポンサーリンク
  1. null 配列
  2. 配列の一部だけ表示(部分表示)
  3. 配列と 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]
Java

ASCII 図イメージ:

a: null

解説:

  • println(a)null と表示するだけで安全
  • Arrays.toString(a)null に直接渡すと NPE
  • deepToString に 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]
Java

ASCII 図イメージ:

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]
    }
}
Java

ASCII 図イメージ:

配列 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]

💡ポイント

  1. null の扱いは慎重に
  2. 大きな配列は部分表示で見やすく
  3. List は1次元でも多次元でも toString() で中身が見える
  4. 配列は toString / deepToString を使って階層ごとに表示する
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました