public class Main {
public static void main(String[] args) {
int count;
if (args.length > 0) {
count = args.length;
}
System.out.println(count);
}
}
選択肢
- あなたの回答
- 正解
正解
C. コンパイルエラーになる
詳細解説
ローカル変数は、使用する前に確実に代入されている必要があります。このコードでは args.length が 0 の場合に count へ値が入らない経路があるため、コンパイラがエラーにします。
なぜ他の選択肢が違うのか
- 0 は int フィールドの初期値ですが、ローカル変数には自動初期化がありません。
- args.length が表示されるのは、if 文が必ず実行されると保証できる場合だけです。
- null を参照していないため、NullPointerException の問題ではありません。
罠ポイント
フィールドとローカル変数の初期化ルールを混同しないことが大切です。ローカル変数はコンパイラが代入済みかを厳しく確認します。