public class Main {
public static void main(String[] args) {
boolean active = true;
if (active = false) {
System.out.println("A");
} else {
System.out.println("B");
}
System.out.println(active);
}
}
選択肢
- あなたの回答
- 正解
正解
C. 「B」と出力され、次の行に「false」と出力される
詳細解説
if 文の条件式で `active = false` と記述すると、変数 active に false が代入され、その代入式全体の評価結果(false)が if 文の条件式として扱われます。そのため else ブロックが実行され「B」が出力されます。また、active 自体も false に書き換わっているため、最後の出力は「false」になります。
なぜ他の選択肢が違うのか
- 条件式の結果が false になるため、if ブロックの「A」は実行されません。
- 条件式の中で active に false が代入されているため、その後の active の値は true ではなく false になっています。
- int 型などの代入は if 条件式でコンパイルエラーになりますが、boolean 型への代入は評価結果が boolean になるため、正常にコンパイル可能です。
罠ポイント
if 文の条件式の中で boolean 型変数に代入を行う記述は、文法的に有効であり、変数そのものの値が書き換わってしまう点です。