【Java】”1″ + 2 + 3 の結果はなぜ「123」になる?文字列連結の評価順序をやさしく解説

Java入門・実践
スポンサーリンク
スポンサーリンク

はじめに

Java を学び始めると必ず出てくる疑問が
「”1″ + 2 + 3 はなぜ 123 になるの?」 という話。

電卓のように計算されると思いきや、
Java では文字列連結のルールが働くため、
ちょっと不思議な結果になります。

この記事では、やさしく・実務寄りに
文字列連結の評価順序を整理していきます。


まずはコードを確認

Java
System.out.println("1" + 2 + 3); // 123
System.out.println(1 + 2 + "3"); // 33
System.out.println("A" + (1 + 2)); // A3

コードのしくみを解説

Java の + は「左から順に評価される」

Java の + 演算子は
左から右へ順番に評価される(左結合) というルールがあります。

つまり "1" + 2 + 3 はこう評価されます。

  • "1" + 2"12"(文字列連結)
  • "12" + 3"123"(文字列連結)

結果は "123" になります。

文字列が登場した瞬間、以降はすべて文字列連結

Java の +

  • 数値同士 → 計算
  • どちらかが文字列 → 文字列連結

というルールがあります。

つまり "1" が出た瞬間、
以降の + はすべて文字列連結に変わる のです。

逆に、数値同士が先に来ると計算される

Java
System.out.println(1 + 2 + "3"); // 33

評価順序はこう。

  • 1 + 23(数値計算)
  • 3 + "3""33"(文字列連結)

あわせて知っておきたいポイント

() を使うと評価順序を変えられる

Java
System.out.println("A" + (1 + 2)); // A3

括弧の中は先に計算されるため、
1 + 2 が 3 になってから文字列連結されます。

実務ではログ出力でよく使われる

Java
System.out.println("count=" + count);

ただし、複雑な連結が多い場合は
StringBuilder を使う方がパフォーマンスが良いです。

null + 文字列 も連結される

Java
String s = null;
System.out.println(s + "ABC"); // nullABC

null がそのまま文字列化されるため、
意図しないログが出ることがあります。


使うときに気をつけたいこと

  • + は左から評価される(左結合)
  • 文字列が出た瞬間、以降はすべて文字列連結
  • 数値同士が先に来ると計算される
  • () を使うと意図した順序にできる
  • null が混ざると “nullXXX” になることがある

実務では「意図しない文字列連結」がバグの原因になることもあります。


まとめ

文字列連結の評価順序

  • Java の + は「左から順に評価される」
  • 文字列が登場した瞬間、以降は文字列連結
  • 数値同士は先に計算される

よくある例

  • "1" + 2 + 3"123"
  • 1 + 2 + "3""33"
  • "A" + (1 + 2)"A3"

decopon
decopon

文字列連結は、 「左から順に評価される」というルールを知るだけで 一気に理解が進みます。Java Bronze の試験でも、実務のログ出力でも、 ここを押さえておくと安心してコードが書けます。
あなたの学びが、次のステップにつながりますように。

moco
moco

“1” が出た瞬間、
もう全部“文字列の世界”になるんだって。
順番って大事だね。

コメント

タイトルとURLをコピーしました