Java入門 #4 - 演算子(算術・比較・論理)

入門 | 10分 で読める | 2026.05.02

公式ドキュメント

この記事の要点

• 演算子は算術・比較・論理・代入の4カテゴリ
&&(AND)と ||(OR)は短絡評価される
++(インクリメント)は前置と後置で挙動が異なる

このシリーズについて

「Java入門」シリーズ第4回。変数を宣言できるようになったので、次は変数を使った計算や比較を学びます。

前提条件: Java入門 #3 - 変数とデータ型 が完了し、int, double, boolean の変数を扱える。

演算子とは

演算子は値を操作するための記号です。足し算の + や、比較の == などがこれに当たります。

カテゴリ用途代表例
算術演算子数値の計算+, -, *, /, %
比較演算子大小・等価の判定==, !=, <, >
論理演算子真偽値の結合&&, `
代入演算子変数への値の格納=, +=, -=
インクリメント/デクリメント1増減++, --

算術演算子

数値の計算に使います。

演算子意味結果
+加算5 + 38
-減算5 - 32
*乗算5 * 315
/除算10 / 33(整数同士なら商のみ)
%剰余(余り)10 % 31

実例

// Java 21 で動作確認済み
public class ArithmeticExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        
        System.out.println("a + b = " + (a + b));  // 13
        System.out.println("a - b = " + (a - b));  // 7
        System.out.println("a * b = " + (a * b));  // 30
        System.out.println("a / b = " + (a / b));  // 3(整数除算)
        System.out.println("a % b = " + (a % b));  // 1(余り)
        
        // 小数を含む計算
        double x = 10.0;
        double y = 3.0;
        System.out.println("x / y = " + (x / y));  // 3.3333...
    }
}

注意: 整数同士の除算は小数部分が切り捨てられます。`10 / 3` は `3.33...` ではなく `3` になります。小数を得たい場合は、どちらか一方を `double` にしてください。

比較演算子

2つの値を比較して、true または false を返します。

演算子意味結果
==等しい5 == 5true
!=等しくない5 != 3true
<より小さい3 < 5true
>より大きい5 > 3true
<=以下5 <= 5true
>=以上3 >= 5false

実例

// Java 21 で動作確認済み
public class ComparisonExample {
    public static void main(String[] args) {
        int age = 20;
        
        System.out.println("age == 20: " + (age == 20));  // true
        System.out.println("age != 20: " + (age != 20));  // false
        System.out.println("age < 18: " + (age < 18));    // false
        System.out.println("age >= 18: " + (age >= 18));  // true
    }
}

ポイント: 等価判定は==(2つ)です。`=`(1つ)は代入演算子なので、間違えると意図しない動作になります。

論理演算子

複数の条件を組み合わせるときに使います。

演算子意味結果
&&AND(かつ)true && falsefalse
``OR(または)
!NOT(否定)!truefalse

真理値表

| A | B | A && B | A || B | !A | |---|---|---|---|---| | true | true | true | true | false | | true | false | false | true | false | | false | true | false | true | true | | false | false | false | false | true |

実例

// Java 21 で動作確認済み
public class LogicalExample {
    public static void main(String[] args) {
        int age = 20;
        boolean hasLicense = true;
        
        // ANDの例: 18歳以上かつ免許あり
        boolean canDrive = (age >= 18) && hasLicense;
        System.out.println("Can drive: " + canDrive);  // true
        
        // ORの例: 学生または高齢者
        boolean isStudent = false;
        boolean isSenior = false;
        boolean hasDiscount = isStudent || isSenior;
        System.out.println("Has discount: " + hasDiscount);  // false
        
        // NOTの例
        System.out.println("Not student: " + !isStudent);  // true
    }
}

短絡評価(short-circuit)

&&||左から順に評価し、結果が確定した時点で右側を評価しません。

int x = 0;
boolean result = (x != 0) && (10 / x > 5);  // 左が false なので右は評価されない(0除算にならない)

TIPS: 短絡評価を利用すると、nullチェックと処理を1行で書けます。`if (obj != null && obj.isValid())` のように、左で安全確認してから右で操作します。

代入演算子

変数に値を代入します。

演算子意味同じ意味
=代入x = 5
+=加算代入x += 3x = x + 3
-=減算代入x -= 3x = x - 3
*=乗算代入x *= 3x = x * 3
/=除算代入x /= 3x = x / 3
%=剰余代入x %= 3x = x % 3

実例

// Java 21 で動作確認済み
public class AssignmentExample {
    public static void main(String[] args) {
        int score = 50;
        
        score += 10;  // score = score + 10; と同じ
        System.out.println("Score: " + score);  // 60
        
        score *= 2;
        System.out.println("Score: " + score);  // 120
        
        score /= 4;
        System.out.println("Score: " + score);  // 30
    }
}

インクリメント・デクリメント

1増やす(++)、1減らす(--)の専用演算子です。

演算子意味結果
++x前置インクリメントx = 5; y = ++x;x=6, y=6
x++後置インクリメントx = 5; y = x++;x=6, y=5
--x前置デクリメントx = 5; y = --x;x=4, y=4
x--後置デクリメントx = 5; y = x--;x=4, y=5

前置と後置の違い

種類タイミング使う場面
前置++x先に増やして、増やした値を使うループカウンタなど
後置x++元の値を使ってから、後で増やす配列インデックスなど

実例

// Java 21 で動作確認済み
public class IncrementExample {
    public static void main(String[] args) {
        int a = 5;
        int b = ++a;  // a を先に6にしてから b に代入
        System.out.println("a = " + a + ", b = " + b);  // a = 6, b = 6
        
        int x = 5;
        int y = x++;  // x の現在値(5)を y に代入してから x を6にする
        System.out.println("x = " + x + ", y = " + y);  // x = 6, y = 5
    }
}

ポイント: 初心者のうちは、インクリメント/デクリメントは単独で使う方が安全です。`x++;` や `++x;` だけの行にすると、挙動の違いを気にせず済みます。

演算子の優先順位

複数の演算子が混在する場合、以下の順で評価されます。

優先度演算子覚え方
++, --, !単項演算子
*, /, %乗除算
+, -加減算
<, >, <=, >=比較
==, !=等価
&&論理AND
`
=, +=, -=, …代入

不安な場合は括弧 () で明示しましょう。

int result = (a + b) * c;  // 括弧で優先順位を明示

よくある間違い

間違い理由正しい書き方
if (x = 5)= は代入。比較は ==if (x == 5)
10 / 33.33 を期待整数除算は切り捨て10.0 / 3 または (double)10 / 3
!x > 5! の優先度が高い!(x > 5)
x++ + ++x複雑すぎて予測困難1行に1回だけ使う

複数演算子の実例

// Java 21 で動作確認済み
public class CombinedOperatorsExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        
        // 算術 + 比較 + 論理
        boolean result = (a > 5) && (b < 5) && ((a % b) == 1);
        System.out.println("Result: " + result);  // true
        
        // 複合代入 + インクリメント
        int count = 0;
        count += 5;   // count = 5
        count++;      // count = 6
        count *= 2;   // count = 12
        System.out.println("Count: " + count);  // 12
    }
}

チェックリスト

次に進む前に、以下を確認してください。

  • 算術演算子(+, -, *, /, %)を使った計算ができる
  • 比較演算子(==, !=, <, >)で条件を書ける
  • 論理演算子(&&, ||, !)で複数条件を結合できる
  • ++-- の前置・後置の違いを理解した

次のステップ

Java入門 #5 - 制御構文(if文・switch文) で、条件分岐の書き方を学びます。

参考リソース

この技術を体系的に学びたいですか?

未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。

メールで無料相談する
← 一覧に戻る