はじめに
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 + 2→3(数値計算)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"); // nullABCnull がそのまま文字列化されるため、
意図しないログが出ることがあります。
使うときに気をつけたいこと
- + は左から評価される(左結合)
- 文字列が出た瞬間、以降はすべて文字列連結
- 数値同士が先に来ると計算される
- () を使うと意図した順序にできる
- null が混ざると “nullXXX” になることがある
実務では「意図しない文字列連結」がバグの原因になることもあります。
まとめ
文字列連結の評価順序
- Java の + は「左から順に評価される」
- 文字列が登場した瞬間、以降は文字列連結
- 数値同士は先に計算される
よくある例
"1" + 2 + 3→"123"1 + 2 + "3"→"33""A" + (1 + 2)→"A3"

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

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

コメント