Java | 演算子の優先順位と結合規則

Java Java
スポンサーリンク

Java の演算子の優先順位と結合規則

分かりづらい計算の「順番」をハッキリさせるのが、優先順位と結合規則。ここを押さえるだけで、結果が思った通りに出るようになります。迷ったら括弧で「意図」を見える化するのが合言葉。


演算子の優先順位

複数の演算が混ざったとき、どれを先に計算するかのルールです。算数と同じく、掛け算・割り算が足し算・引き算より先に計算されます。

  • 基本ルール: 掛け算・割り算・余り → 足し算・引き算 → 代入
  • よく出る優先度の並び:
    • 高: *, /, %
    • 中: +, -
    • 低: =

例1:優先順位で結果が変わる

int result = 10 + 5 * 4; // 10 + (5 * 4) = 10 + 20 = 30
Java
  • ポイント: *+ より先。見た目に惑わされない。

例2:括弧で意図を変える

int result = (10 + 5) * 4; // (10 + 5) = 15 → 15 * 4 = 60
Java
  • ポイント: 括弧は最優先。読みやすさもアップ。

結合規則(同じ優先度の並び順)

同じ種類の演算子が続いたとき、「左から」か「右から」かを決めるルールです。

  • 左結合: 左から順に計算(+, -, *, /, %, ほとんどがこれ)
  • 右結合: 右から順に計算(= や複合代入 += など)

例3:左結合のイメージ

int result = 20 - 5 - 3; // (20 - 5) = 15 → 15 - 3 = 12
Java
  • ポイント: 右からやると 20 – (5 – 3) = 18。全然違う。

例4:代入は右結合

int a, b, c;
a = b = c = 5; // c に 5、b に c、a に b → 全部 5
Java
  • ポイント: 右から順に値が渡ってくる。

よくあるつまずきポイント

  • 整数同士の割り算は小数切り捨て: 5 / 22。小数が欲しいなら、どちらかを double に。
  • % は余り: 7 % 31。偶数判定は n % 2 == 0
  • ++-- の位置で意味が変わる: 前置はすぐ反映、後置は「使った後で」変わる。
  • + は文字列連結にも使われる: 数値計算と混ざるときは括弧で明確に。

例5:整数割り算と型

double x = 5 / 2;      // 2 → 2.0 に変換される(意図せず小数落ちる)
double y = 5.0 / 2;    // 2.5(片方が double なら小数に)
double z = (double)5 / 2; // 2.5(キャストでもOK)
Java

例6:インクリメントの前置・後置

int n = 10;
int a = ++n; // 前置:nが11になってからaに代入 → a=11, n=11
int b = n++; // 後置:先に代入してからnが+1 → b=11, n=12
Java

例7:文字列連結の落とし穴

System.out.println("合計: " + 2 + 3);     // 合計: 23(順番に連結)
System.out.println("合計: " + (2 + 3));   // 合計: 5(括弧で計算を先に)
Java

練習問題(手で答えを書いてからコードで確認)

問題1:結果は?

  • 式: 10 + 2 * 3 - 4
  • ヒント: 掛け算が先。その後、左から。

解答例:

int result = 10 + 2 * 3 - 4; // 10 + 6 - 4 = 12
Java

問題2:括弧で変わる?

  • 式A: 8 - 3 - 2
  • 式B: 8 - (3 - 2)

解答例:

int a = 8 - 3 - 2;     // (8 - 3) - 2 = 3
int b = 8 - (3 - 2);   // 8 - 1 = 7
Java

問題3:整数割り算の注意

  • 式: 7 / 2 + 1.0

解答例:

double v = 7 / 2 + 1.0;   // 3 + 1.0 = 4.0(7/2 は 3)
double w = 7 / 2.0 + 1.0; // 3.5 + 1.0 = 4.5(片方が小数)
Java

問題4:++ の位置

  • 開始: int x = 5;
  • 式: int y = x++ + ++x;

解答例:

int x = 5;
int y = x++ + ++x;
// ステップ: x++ → yに5を使い、その後x=6
// 次の ++x → xが7になってから使う
// y = 5 + 7 = 12, 最終的に x = 7
Java

安全に書くコツ

  • 括弧で意図を明示: 読み手と未来の自分へのメモ。
  • 型を意識する: 整数か小数かで結果が変わる。
  • 長い式は分ける: 一行で頑張らない。中間変数で読みやすく。

例:分けて安全に

int base = 10;
int bonus = 5 * 4;          // 20
int total = base + bonus;   // 30
System.out.println(total);
Java
タイトルとURLをコピーしました