Java | 配列の文字列表現 練習問題

Java Java
スポンサーリンク

では 問題 41〜50 のまったく新しい 10 問 を追加し、
全 50 問の特大問題集 を完成させます。

今回も 基礎 → 応用 → 実務風 → 高難度 と段階的に構成しています。
もちろん 模範解答つき

問題 41(基礎)

次の配列 byte[] bs = {1, 2, 3}; を toString で表示するコードを書け。


問題 42(基礎)

次のコードの出力を答えよ。

String s = "Hello";
System.out.println(s.toString());
Java

(※ 配列の問題と比較するため)


問題 43(基礎)

次の配列を println だけで出力したとき、何が表示されるか説明せよ。

double[] vals = {1.1, 2.2};
System.out.println(vals);
Java

問題 44(基礎)

次の配列を「中身が見える形」で表示するコードを書け。

String[] animals = {"Dog", "Cat", "Fox"};
Java

問題 45(応用)

次の多次元配列(空配列を含む)を deepToString で表示せよ。

int[][] table = {
    {},
    {1},
    {1, 2, 3}
};
Java

問題 46(応用)

次のコードの問題点を説明せよ。

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

問題 47(応用)

次の配列を toString で表示するとどうなるか書け。

String[][] arr = {
    {"A"},
    {"B", "C"}
};
Java

問題 48(実務風)

ログ出力用に、次の配列を下記形式で出力するコードを書け。

String[] tags = {"error", "warn", "debug"};
Java

出力例:

Tags => [error, warn, debug]

問題 49(実務風)

ECサイトの商品データを表す 3 次元配列がある。

String[][][] products = {
    {
        {"ID01","Pen"},
        {"ID02","Note"}
    },
    {
        {"ID03","Bag"},
        {"ID04","Case"}
    }
};
Java

すべてを 見える形 で出力するコードを書け。


問題 50(高難度)

次のコードを実行したときの出力を答えよ。

Object[] mixed = {
    new int[]{1,2},
    new String[]{"A","B"},
    "Hello"
};

System.out.println(Arrays.deepToString(mixed));
Java

解答 41

byte[] bs = {1, 2, 3};
System.out.println(Arrays.toString(bs));
Java

解答 42

Hello

String の toString は中身を返す(配列とは異なる)


解答 43

例:

[D@3f99bd52

→ 配列の 参照アドレス が表示され、中身は見えない。


解答 44

String[] animals = {"Dog", "Cat", "Fox"};
System.out.println(Arrays.toString(animals));
Java

解答 45

int[][] table = {
    {},
    {1},
    {1, 2, 3}
};

System.out.println(Arrays.deepToString(table));
// 出力: [[], [1], [1, 2, 3]]
Java

解答 46

問題点:
Arrays.toString2 次元配列の中身を展開しない

出力例:

[[I@xxxxxx, [I@yyyyyy]

→ 要素が「参照」のまま表示される。


解答 47

出力例:

[[Ljava.lang.String;@xxxxxx, [Ljava.lang.String;@yyyyyy]

→ toString では子配列が参照アドレスになる。

(※中身を見たいなら deepToString が必要)


解答 48

String[] tags = {"error", "warn", "debug"};
System.out.println("Tags => " + Arrays.toString(tags));
Java

解答 49

String[][][] products = {
    {
        {"ID01","Pen"},
        {"ID02","Note"}
    },
    {
        {"ID03","Bag"},
        {"ID04","Case"}
    }
};

System.out.println(Arrays.deepToString(products));
Java

解答 50

出力:

[[1, 2], [A, B], Hello]

理由:

  • deepToString は Object 配列内の「int[]」も展開する
  • 文字列はそのまま "Hello" と表示される
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました