では 問題 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.toString は 2 次元配列の中身を展開しない。
出力例:
[[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"と表示される
