配列の型と ArrayStoreException
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
Object[] objs = new String[2];
objs[0] = "a";
objs[1] = 1;
System.out.println(objs[0]);
}
}
- A
aと出力される - B 実行時に例外が発生する
- C コンパイルエラーになる
- D
nullと出力される
正解と解説を見る
正解: B
- A: objs[1] = 1 の時点で例外が発生するので、println まで進みません。
- B: 実体は String の配列なので、Integer を入れると ArrayStoreException が発生します。
- C: String[] は Object[] の変数に代入でき、Object[] に Integer を入れるのも型としては正しいので、コンパイルできます。
- D: 例外が発生するので出力はありません。
ポイント
String[]はObject[]の変数に代入できるので、コンパイルは通ります。- 実体は String の配列なので、Integer を入れようとすると実行時に
ArrayStoreExceptionです。
「配列 (一次元配列、二次元配列) の宣言、インスタンス化、初期化および使用」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)