引数なしで実行したときの args
このプログラムを引数なしで実行するとどうなるか。
public class Main {
public static void main(String[] args) {
System.out.println(args.length);
System.out.println(args[0]);
}
}
- A
0と出力された後、例外が発生する - B
0とnullが出力される - C すぐに例外が発生して何も出力されない
- D コンパイルエラーになる
正解と解説を見る
正解: A
- A: args は長さ 0 の配列なので 0 と出力され、その後の
args[0]で範囲外になり例外が発生します。 - B: 要素が無い配列に
args[0]でアクセスすると、null ではなく例外になります。 - C: 1行目の
args.lengthは問題なく 0 と出力されます。例外は2行目です。 - D: 配列の範囲外アクセスは実行時に起きる誤りで、コンパイルは通ります。
ポイント
- 引数なしでも args は null ではなく、長さ 0 の配列 です。そのため
args.lengthは 0 と出力されます。 args[0]は範囲外なのでArrayIndexOutOfBoundsExceptionが発生します。
「コマンドラインでの Java プログラムのコンパイルと実行」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)