カテゴリ: JavaSilver試験対策 更新日: 2026/03/24

Javaの演算子の優先順位を完全解説!初心者向けの丁寧な解説

025
Javaの演算子の優先順位

先生と生徒の会話形式で理解しよう

生徒

「Javaで複数の演算子が組み合わさる式の計算結果がよく分かりません。どうすれば正しく理解できますか?」

先生

「いい質問ですね!演算子には優先順位があるので、どの順番で計算されるかを知ることが大切です。」

生徒

「なるほど!優先順位について詳しく教えてください!」

先生

「では、演算子の優先順位について基本から応用まで学んでいきましょう。」

1. 演算子の優先順位とは?

1. 演算子の優先順位とは?
1. 演算子の優先順位とは?

Javaでは複数の演算子を使用する式がある場合、どの順序で計算が行われるかを定めたルールが「演算子の優先順位」です。優先順位を理解することで、計算結果を正確に予測できます。

以下は、Javaの演算子の優先順位を示した表です:

優先順位 演算子
高い [], ., (パラメータのリスト), x++, x--
++x, --x, +x, -x, ~, !
new () x
*, /, %
+, -
<<, >>, >>>
<, >, <=, >=, instanceof
==, !=
&
^
|
&&
||
?:
低い =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=

2. 設問の解説

2. 設問の解説
2. 設問の解説

以下のプログラムを例に、演算子の優先順位を理解しましょう:


public class Main {
    public static void main(String[] args) {
        int x = 100, y = 20, z = 30;
        System.out.println(x % y * z + x / y); // 結果: 5
    }
}

このコードでは、x % y * z + x / yという式が実行されています。優先順位に基づいて以下の順序で計算されます:

  1. x % y: 100を20で割った余り(結果は0)。
  2. 0 * z: 0に30を掛けた結果(結果は0)。
  3. x / y: 100を20で割った結果(結果は5)。
  4. 0 + 5: 最終結果は5

このように、優先順位を理解することで正確な計算結果を予測できます。

3. 実践例

3. 実践例
3. 実践例

演算子の優先順位を確認するために、以下のコードを試してみましょう:


public class OperatorPrecedence {
    public static void main(String[] args) {
        int a = 50, b = 10, c = 5;
        int result = a / b + c * (a % b);
        System.out.println("計算結果: " + result);
    }
}

このコードでは、カッコを使うことで計算順序を明確にしています。優先順位が分かりやすくなるため、可読性が向上します。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 注意点とコツ

4. 注意点とコツ
4. 注意点とコツ
  • カッコの活用:優先順位が曖昧な場合はカッコを使って計算順序を明示する。
  • 可読性を重視:複雑な式は分割して書くことで読みやすさを向上させる。
  • 数学の基本ルールを応用:乗算・除算は加算・減算よりも優先される。

演算子の優先順位を覚える必要がある場面では、頻出のものを中心に学ぶことが重要です。

5. 結合規則:優先順位が同じ場合のルール

5. 結合規則:優先順位が同じ場合のルール
5. 結合規則:優先順位が同じ場合のルール

同じ優先順位の演算子が並んでいる場合、どちらから計算するかを決めるルールを「結合規則」と呼びます。Javaのほとんどの演算子は左から右へ計算されますが、代入演算子などは右から左へと計算されます。

プログラミング未経験の方でも間違いやすい、代入演算子の「右結合」の例を見てみましょう。


public class BindingExample {
    public static void main(String[] args) {
        int a, b, c;
        // 右から左へ代入されていく(c=10 -> b=c -> a=b)
        a = b = c = 10;
        System.out.println("aの値: " + a);
        
        // 通常の計算は左から右
        int result = 100 / 10 / 2; // (100 / 10) / 2 と同じ
        System.out.println("計算結果: " + result);
    }
}

実行結果:


aの値: 10
計算結果: 5

このように、基本は「左から右」ですが、値をセットする「=」などは「右から左」に流れるという特徴を覚えておくと、複雑なコードも読み解けるようになります。

6. インクリメント演算子の前後による違い

6. インクリメント演算子の前後による違い
6. インクリメント演算子の前後による違い

優先順位の表でも上位にある ++(インクリメント)や --(デクリメント)は、変数の前に書くか後に書くかで、計算のタイミングが大きく変わります。

これはJavaの試験や実務でも非常に間違いやすいポイントです。以下のサンプルでその挙動を確認してください。


public class IncrementTest {
    public static void main(String[] args) {
        int num = 10;
        // 後置:表示した「後」で1増える
        System.out.println("後置の結果: " + num++); 
        
        int val = 10;
        // 前置:表示する「前」に1増える
        System.out.println("前置の結果: " + ++val);
    }
}

実行結果:


後置の結果: 10
前置の結果: 11

「後置」の場合は、その行の他の計算や処理が終わってから最後に1が増えるというイメージです。優先順位のルールの中でも特にトリッキーな部分なので、初心者のうちは注意して使いましょう。

7. カッコ「( )」の重要性と強制的な順位変更

7. カッコ「( )」の重要性と強制的な順位変更
7. カッコ「( )」の重要性と強制的な順位変更

演算子の優先順位をすべて暗記するのは大変です。そこで最も実用的で推奨される方法が、カッコ ( ) を使って計算順序を強制的に指定することです。

カッコで囲まれた部分は、表のどの演算子よりも最優先で計算されます。これにより、意図しない計算ミスを防ぐことができます。


public class BracketExample {
    public static void main(String[] args) {
        int a = 10, b = 20, c = 2;
        
        // カッコなし:掛け算が優先される (10 + 40)
        int res1 = a + b * c; 
        
        // カッコあり:足し算を先に計算させる (30 * 2)
        int res2 = (a + b) * c;
        
        System.out.println("カッコなし: " + res1);
        System.out.println("カッコあり: " + res2);
    }
}

実行結果:


カッコなし: 50
カッコあり: 60

プロの現場でも、他の人がコードを読んだときに迷わないよう、あえてカッコをつけて計算順序を分かりやすくすることが多いです。「迷ったらカッコをつける」というルールを覚えておけば、初心者でも安心して複雑な式を書くことができます。

まとめ

まとめ
まとめ

本記事では、Javaの演算子の優先順位について学びました。演算子の優先順位は複雑な式を正確に理解し、予期せぬバグを回避するために非常に重要です。今回解説したポイントを振り返ると、以下の点が重要です。

  • 優先順位:演算子には高いものから低いものまで優先順位が決まっており、同じ優先順位の場合は左から順に計算されます。
  • カッコの活用:カッコを使用することで計算順序を明示的に示し、コードの可読性を高めることができます。
  • 数学と同じルール:乗算や除算は加算や減算よりも優先されます。

以下は、今回学んだ内容を活用した応用例です:


public class PrecedenceSummary {
    public static void main(String[] args) {
        int a = 15, b = 5, c = 3;
        int result = (a + b) * c / (a % b + c);
        System.out.println("計算結果: " + result);
    }
}

このコードでは、カッコを使うことで複雑な計算式の計算順序を明確にしています。このように優先順位を意識してコードを書くことで、意図しない計算ミスを防ぐことができます。

先生と生徒の振り返り会話

生徒

「演算子の優先順位って本当に重要なんですね!これを知らないと正しい計算結果が出ない場合があるんですね。」

先生

「その通りです。特に複雑な式を書くときは、優先順位をしっかり意識することが大切です。カッコを使って計算順序を明示するとさらに安心ですね。」

生徒

「カッコを使うことで、自分も他の人もコードが読みやすくなることが分かりました!」

先生

「そうですね。読みやすいコードを書くことは、良いプログラマーの第一歩です。これからも優先順位を意識してコードを書いてみましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaの演算子の優先順位とは何ですか?初心者向けにわかりやすく教えてください。

Javaの演算子の優先順位とは、複数の演算子を含む式の中で、どの演算子が先に計算されるかを定めたルールのことです。優先順位を理解することで、式の計算結果を正確に予測できます。

Javaの演算子にはどのような種類がありますか?優先順位の高い演算子はどれですか?

Javaの演算子には、インクリメント(++)、デクリメント(--)、算術演算子(+、-、*、/)、論理演算子(&&、||)、代入演算子(=、+=など)などがあります。優先順位が高いのは、[] や .(ドット)、x++、x-- などです。
JavaSilver試験対策の一覧へ
新着記事
Flutter
Flutterでのリポジトリパターンの実装例
Flutterでリポジトリパターンを実装する方法を完全解説!初心者向けアーキテクチャ設計入門
Java
Java の Objects クラスを使って null チェックを簡単にする方法
JavaのObjectsクラスの使い方を完全ガイド!nullチェックを簡単・安全に行う方法
Java
Java の UUID クラスを使って一意の識別子を作成する方法
JavaのUUIDクラスの使い方を完全ガイド!初心者でもわかる一意な識別子の作成方法
Java
Java の古い日付クラス(Date, Calendar)と新しい日付 API の違い
JavaのDateとCalendarと新しい日付APIの違いとは?初心者向け完全ガイド
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク