AI作成・AIで再検証済(有資格者監修なし)1Z0-815-JPN 対応
算術演算子(+ の左結合評価順と文字列連結演算子の切り替わり)難易度 標準無料

次のコードの出力として正しいものを選べ。

1  public class Q5 {
2      public static void main(String[] args) {
3          System.out.println(1 + 2 + "3" + 4 + 5);
4      }
5  }
  1. A3345
  2. B12345
  3. C1+2+34+5 のような文字列がそのまま出力される(数値部分も文字として結合)
  4. Dコンパイルエラー(int と String を + で混在できない)
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・AIで再検証済

解説

+ 演算子は左から右へ結合(left-associative)し、途中で数値の加算と文字列連結が切り替わる点が重要。String が一度でも登場すると、それ以降の + はすべて文字列連結になる。

  • 1 + 2:どちらも int → 加算 → 3(int)。
  • 3 + "3":右辺が String → 文字列連結 → "33"。
  • "33" + 4:左辺が既に String → 文字列連結 → "334"。
  • "334" + 5:同様に連結 → "3345"。

出力は 3345。

各誤答が違う理由
  • B"3" が登場した時点で右側の + は文字列連結に切り替わる、という点を無視した誤り。全体が数値加算のまま進むことはない("3" は String リテラル)。
  • C1 + 2 はString が登場する前に評価されるので、まず数値として計算され 3 になる。式の記号がそのまま文字列化されることはない。
  • D+ 演算子は String と数値(あるいは他の任意の値)の連結を正式にサポートする(文字列連結演算子)。混在自体はエラーではない。
ひっかけ: 「+ が1つでも文字列を含む式に登場すると、式全体がすべて文字列連結になる」という誤解が多い。実際は左から評価が進み、String が現れた時点から右側だけが文字列連結に切り替わる。1+2 の部分は先に数値として計算されるため、"1234"+5 や "123"+"4"+"5" にはならない。
コマンド例と想定される挙動(未実行)
出力:
3345
AIが作成し、別の手順のAIで誤りを点検した解説です(有資格者による監修は経ていません)

この問題集の作り方

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