演算子

演算子は変数や値に対して操作を実行するために使用されます。このレッスンでは、Javaの various 演算子を学びます。

算術演算子

演算子 説明 結果
+ 加算 5 + 3 8
- 減算 5 - 3 2
* 乗算 5 * 3 15
/ 除算 5 / 3 1(整数除算)
% 剰余 5 % 3 2
++ インクリメント i++ iが1増加
-- デクリメント i-- iが1減少

例:算術演算

JAVA
public class ArithmeticDemo {
    public static void main(String[] args) {
        int a = 10, 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 c = 10.0, d = 3.0;
        System.out.println("c / d = " + (c / d));  // 3.3333...
    }
}
▶ 試してみよう
⚠️ 整数除算: 2つの整数を割ると、結果も整数となり、小数点以下は切り捨てられます。小数点以下の結果を得るには、少なくとも1つのオペランドが浮動小数点数でなければなりません。

インクリメントとデクリメント

JAVA
int i = 5;

// 後置インクリメント:先に使用してから増加
int a = i++;  // a = 5, i = 6

// 前置インクリメント:先に増加してから使用
int b = ++i;  // b = 7, i = 7

代入演算子

演算子 説明 等価
= 代入 a = 5
+= 加算して代入 a += 3 a = a + 3
-= 減算して代入 a -= 3 a = a - 3
*= 乗算して代入 a *= 3 a = a * 3
/= 除算して代入 a /= 3 a = a / 3
%= 剰余を代入 a %= 3 a = a % 3

例:代入演算

JAVA
public class AssignmentDemo {
    public static void main(String[] args) {
        int a = 10;
        System.out.println("初期値: " + a);  // 10
        
        a += 5;
        System.out.println("a += 5: " + a);  // 15
        
        a -= 3;
        System.out.println("a -= 3: " + a);  // 12
        
        a *= 2;
        System.out.println("a *= 2: " + a);  // 24
        
        a /= 4;
        System.out.println("a /= 4: " + a);  // 6
        
        a %= 4;
        System.out.println("a %= 4: " + a);  // 2
    }
}
▶ 試してみよう

比較演算子

比較演算子はブール値(trueまたはfalse)を返します。

演算子 説明 結果
== 等しい 5 == 5 true
!= 等しくない 5 != 3 true
> 大なり 5 > 3 true
< 小なり 5 < 3 false
>= 以上 5 >= 5 true
<= 以下 5 <= 3 false

例:比較演算

JAVA
public class ComparisonDemo {
    public static void main(String[] args) {
        int a = 10, b = 20;
        
        System.out.println("a == b: " + (a == b));  // false
        System.out.println("a != b: " + (a != b));  // true
        System.out.println("a > b: " + (a > b));    // false
        System.out.println("a < b: " + (a < b));    // true
        System.out.println("a >= 10: " + (a >= 10)); // true
        System.out.println("a <= 5: " + (a <= 5));   // false
    }
}
▶ 試してみよう

論理演算子

演算子 説明 結果
&& 論理積 true && false false
|| 論理和 true || false true
! 論理否定 !true false

論理演算子の真理値表

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
public class LogicDemo {
    public static void main(String[] args) {
        int age = 25;
        boolean hasID = true;
        
        // 年齢が18歳以上でIDを持っている
        boolean canEnter = (age >= 18) && hasID;
        System.out.println("入場可能: " + canEnter);  // true
        
        // 年齢が12歳未満または60歳超
        boolean isSpecial = (age < 12) || (age > 60);
        System.out.println("特別カテゴリ: " + isSpecial);  // false
        
        // 論理否定
        boolean isAdult = age >= 18;
        System.out.println("成人: " + isAdult);    // true
        System.out.println("成人ではない: " + !isAdult);  // false
    }
}
▶ 試してみよう
💡 短絡評価: &&は左辺がfalseの場合に停止し、||は左辺がtrueの場合に停止します。これらのケースでは右辺は評価されません。

三項演算子

三項演算子はif-elseの短縮形です。

JAVA
// 構文: 条件 ? 値1 : 値2
int max = (a > b) ? a : b;

例:三項演算子

JAVA
public class TernaryDemo {
    public static void main(String[] args) {
        int a = 10, b = 20;
        
        // 最大値を見つける
        int max = (a > b) ? a : b;
        System.out.println("最大値: " + max);  // 20
        
        // 奇数か偶数かを確認
        int num = 7;
        String result = (num % 2 == 0) ? "偶数" : "奇数";
        System.out.println(num + "は" + result);  // 7は奇数
        
        // 絶対値
        int x = -5;
        int abs = (x >= 0) ? x : -x;
        System.out.println("絶対値: " + abs);  // 5
    }
}
▶ 試してみよう

演算子の優先順位

優先順位の高い演算子が最初に評価されます。優先順位を変更するには括弧を使用します。

優先順位 演算子 説明
1 () 括弧
2 ! ++ -- 単項演算子
3 * / % 乗算、除算、剰余
4 + - 加算、減算
5 < <= > >= 比較
6 == != 等価
7 && 論理積
8 || 論理和
9 ?: 三項演算子
10 = += -= など 代入

例:優先順位

JAVA
public class PrecedenceDemo {
    public static void main(String[] args) {
        // 乗算は加算より優先順位が高い
        int result1 = 2 + 3 * 4;
        System.out.println("2 + 3 * 4 = " + result1);  // 14、20ではない
        
        // 括弧を使用して優先順位を変更
        int result2 = (2 + 3) * 4;
        System.out.println("(2 + 3) * 4 = " + result2);  // 20
    }
}
▶ 試してみよう
💡 ヒント: 複雑な式では括弧を使用して可読性を高め、優先順位のエラーを避けてください。

型昇格

異なる型の値が演算で混在する場合、小さい型は自動的に大きい型に昇格されます。

JAVA
public class TypePromotion {
    public static void main(String[] args) {
        // int + long → long
        int a = 10;
        long b = 20;
        long c = a + b;
        
        // int + double → double
        int d = 10;
        double e = 3.14;
        double f = d + e;
        
        // byte + byte → int
        byte g = 10;
        byte h = 20;
        // byte i = g + h;  // エラー!結果はint型
        int i = g + h;      // 正しい
    }
}

❓ よくある質問

Q ==とequalsの違いは何ですか?
A ==はプリミティブの値を比較し、参照のアドレスを比較します。equalsはオブジェクトの内容を比較します。文字列の比較にはequalsを使用してください。
Q i++と++iの違いは何ですか?
A i++は値を先に使用してから増加し、++iは先に増加してから使用します。単独で使用した場合、効果は同じです。違いは式内でのみ重要です。
Q なぜ0.1 + 0.2 != 0.3なのですか?
A 浮動小数点数には精度の問題があります。0.1と0.2はバイナリで正確に表現できません。浮動小数点値の比較には範囲比較を使用してください。

📖 まとめ

📝 演習

  1. 算術練習: 秒数を入力し、「X時間X分X秒」形式に変換
  2. 比較練習: 年がうるう年かどうかを判定(4で割り切れるが100で割り切れない、または400で割り切れる)
  3. 三項練習: 3つの数を入力し、三項演算子を使用して最大値を見つける

次のレッスン

次のレッスンでは、条件文を学びます — プログラムで判断を行います。

100%