The variableisOKis declared but not initialized, so its value isnull. Theif-elseconditions check for specific values ofisOK(trueorfalse), but since it isnull, none of those conditions are satisfied. The program defaults to theelseblock, assigning4tox. Reference:Apex Developer Guide: Boolean Data Type
最新のコメント (最新のコメントはトップにあります。)
正解は **A. 4** です。
画像内で選択されている「B. 1」は不正解です。なぜ **4** になるのか、コードの動きを1行ずつ解説します。
### 解説
この問題の最大のポイントは、**Apex における変数の初期値は `null` である** という点です。
**1. 変数の初期化**
```apex
Boolean isOK;
```
* 変数を宣言しただけで値を代入していないため、`isOK` の中身は **`null`** になります。(`false` ではありません)
<!-- end list -->
```apex
String theString = 'Hello';
```
* `theString` は `'Hello'` です。
**2. 条件分岐(IF文)の確認**
* **1つ目の条件:** `if (isOK == false && ...)`
* `isOK` は `null` です。
* Apex では、`null` と `false` は別のものです。したがって `null == false` は **`false`(不成立)** となります。
* このブロック(x=1)は実行されません。
* **2つ目の条件:** `else if (isOK == true && ...)`
* 同様に、`null == true` も **`false`(不成立)** となります。
* このブロック(x=2)も実行されません。
* **3つ目の条件:** `else if (isOK != null && ...)`
* `isOK` は `null` なので、「`null` ではない (`!=`)」という条件は **`false`(不成立)** となります。
* このブロック(x=3)も実行されません。
* **最後の else:**
* これまでの条件がすべて不成立だったため、最後の `else` ブロックが実行されます。
* ここで **`x = 4;`** が代入されます。
### 結論
したがって、最終的な `x` の値は **4** となります。
**試験のポイント:**
Apex(およびJavaなどの言語)では、ブール型(Boolean)の変数が初期化されていない場合、勝手に `false` になることはなく、`null` として扱われます。この仕様を理解しているかを問う典型的な問題です。...