AI作成・AIで再検証済(有資格者監修なし)1Z0-815-JPN 対応
論理演算子(& と | の boolean 型への適用・非短絡評価)難易度 高無料

論理演算子 &&/||(条件積・条件和)と &/|(ビット単位/論理演算子)に関する次の記述のうち、正しいものをすべて選べ(複数選択)。

  1. A&& は左辺が false であれば右辺を評価しない(短絡評価)。
  2. B& は boolean 型同士にも使え、その場合は両辺を必ず評価する(短絡評価しない)。
  3. C| は int 型のビット演算にのみ使え、boolean 型には使えない。
  4. D|| は左辺が true であれば右辺を評価しない(短絡評価)。
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:A・B・DAI作成・AIで再検証済

解説

& と | は「int 同士のビット演算子」というイメージが強いが、実はboolean 同士にも適用でき、その場合は「短絡評価をしない論理演算子」として働く(JLS §15.22)。

  • &&:左辺が false なら右辺を評価しない(短絡評価)。
  • ||:左辺が true なら右辺を評価しない(短絡評価)。
  • &(boolean版):両辺を必ず評価してから論理積を取る(短絡しない)。
  • |(boolean版):両辺を必ず評価してから論理和を取る(短絡しない)。

したがって & は int のビット演算専用ではなく boolean にも使え、| も同様に boolean に使える。「| は int のビット演算にしか使えない」という記述は誤り。

各誤答が違う理由
  • C| は boolean 型同士にも適用でき、その場合は「短絡しない論理和」として動作する。int 専用というのは誤り。
ひっかけ: Silver の典型的な誤解は「&/| は数値のビット演算専用で boolean には使えない」というもの。実際は両方の型で使える多重定義された演算子であり、boolean に対しては「短絡しない論理演算子」として動作する。副作用(メソッド呼び出し・変数の変更)を両辺で必ず起こしたい場合にあえて &/| を使うテクニックがある。
コマンド例と想定される挙動(未実行)
検証(例):
static boolean check(int x, StringBuilder sb){ sb.append(x); return x>0; }
StringBuilder sb = new StringBuilder();
boolean r = check(1, sb) | check(-2, sb);
// r=true、sb="1-2" (両辺とも呼ばれる=非短絡)
公式ドキュメント・関連JLS SE11 §15.22 Bitwise and Logical Operators↗
AIが作成し、別の手順のAIで誤りを点検した解説です(有資格者による監修は経ていません)

この問題集の作り方

  1. 問題と解説はAIが作成しています。この資格の問題に、有資格者(著者)の監修は入っていません。
  2. 各問に、公式ドキュメントの出典リンクを付けています。書いてあることは、出典に当たって確かめられます。
  3. 誤答の選択肢それぞれに、なぜ誤りなのかの理由を書いています。
  4. 誤りを見つけたら報告できます。原則として無償で訂正・削除します。
  5. 各試験の運営団体とは無関係の非公式教材です。合格を保証するものではありません。
この分野をもっと解いて、得点源に
演算子 を含む問題を分野別に演習できます。
演習する →