Java | 算術演算子

Java Java
スポンサーリンク

Javaの算術演算子の基礎

はじめの一歩として、「数をどう計算するか」をしっかり理解すると、あとでつまずきにくくなります。ここでは、初心者が混乱しやすいポイントを例題でかみ砕いて説明します。


基本の5つの演算子

  • 足し算 (+): 数を足します
  • 引き算 (-): 数を引きます
  • 掛け算 ():* 数を掛けます
  • 割り算 (/): 数を割ります
  • 余り (%): 割ったときの余りを求めます
class Basics {
    public static void main(String[] args) {
        System.out.println(3 + 5);   // 8
        System.out.println(10 - 4);  // 6
        System.out.println(6 * 7);   // 42
        System.out.println(9 / 2);   // 4 ← 整数同士だと小数切り捨て
        System.out.println(9 % 2);   // 1 ← 9を2で割った余り
    }
}
Java

整数の割り算は小数が消える

  • ルール: 整数同士の割り算は小数点以下が切り捨てられて、結果も整数になります。
  • 例: 7 ÷ 3 は 2.333…ですが、7 / 3 は 2 になります。
class IntegerDivision {
    public static void main(String[] args) {
        System.out.println(7 / 3);     // 2
        System.out.println(10 / 4);    // 2
    }
}
Java
  • 小数の結果がほしいとき: どちらか一方を小数型にする(doublefloat)。
class FloatingDivision {
    public static void main(String[] args) {
        System.out.println(7.0 / 3);    // 2.3333333333333335
        System.out.println((double)7 / 3); // 2.3333333333333335
        System.out.println(10 / 4.0);   // 2.5
    }
}
Java

余り (%) は「割り切れない分」

  • 使いどころ: 偶数判定、周期処理、配列のループなどでよく使います。
class ModuloExamples {
    public static void main(String[] args) {
        int n = 10;
        System.out.println(n % 2 == 0); // true ← 偶数判定

        System.out.println(14 % 5);     // 4  ← 14を5で割ると2余り4
        System.out.println(9 % 3);      // 0  ← 割り切れると余りは0
    }
}
Java

型が違うときの自動変換(型昇格)

  • ルール: intdouble を混ぜて計算すると、int が自動的に double に変わって計算されます。
  • 結果: 小数を含む計算が可能になり、出力も小数になります。
class TypePromotion {
    public static void main(String[] args) {
        System.out.println(10 + 4.0);    // 14.0
        System.out.println(5 * 2.5);     // 12.5
        double result = 10 / 4.0;        // 2.5
        System.out.println(result);
    }
}
Java

0で割るとどうなる?

  • 整数の割り算 (int / int): 実行時エラー(ArithmeticException
  • 小数の割り算 (double / double): Infinity(無限大)や NaN(数でない)になる
class DivisionByZero {
    public static void main(String[] args) {
        // System.out.println(10 / 0);   // エラーになるのでコメントアウト

        System.out.println(10.0 / 0.0);  // Infinity
        System.out.println(0.0 / 0.0);   // NaN
    }
}
Java

よく使うショートカット(加減算の簡略記法)

  • 加算代入 (+=): 左の変数に右の値を足して代入
  • 減算代入 (-=): 左の変数から右の値を引いて代入
  • インクリメント (++): 1を足す
  • デクリメント (--): 1を引く
class Shorthand {
    public static void main(String[] args) {
        int x = 5;
        x += 3;              // x = x + 3 → 8
        x -= 2;              // x = x - 2 → 6

        int y = 10;
        y++;                 // y = y + 1 → 11
        y--;                 // y = y - 1 → 10
        System.out.println(x + ", " + y); // 6, 10
    }
}
Java

演算の順番(優先順位)

  • 基本の順序: 掛け算・割り算が先、足し算・引き算が後
  • かっこ () を使うと: かっこの中が最優先で計算されます
class Precedence {
    public static void main(String[] args) {
        System.out.println(2 + 3 * 4);   // 14  ← 3*4が先で12、最後に+2
        System.out.println((2 + 3) * 4); // 20  ← 2+3を先に計算して5*4
    }
}
Java

つまずきがちなポイント

  • ラベル: 整数割り算の落とし穴
    小数が必要なのに int / int にしてしまうと、期待と違う結果になります。片方を double にするか、最初から double で計算しましょう。
  • ラベル: % の直感
    「余りがどれくらいか」を返すだけで、割り算の結果(商)は返しません。7 % 3 は 2 ではなく 1 です。
  • ラベル: 0除算の扱い
    int はエラー、小数は InfinityNaN。違いを知っておくとデバッグが楽になります。

手を動かす例題

例題1: 平均値を小数で出力

  • 課題: 点数 80, 95, 72 の平均を小数で表示する
class Average {
    public static void main(String[] args) {
        int a = 80, b = 95, c = 72;
        double avg = (a + b + c) / 3.0;      // 3ではなく3.0にする!
        System.out.println(avg);             // 82.33333333333333
    }
}
Java

例題2: 偶数なら「even」、奇数なら「odd」

  • 課題: 変数 n が偶数なら even、奇数なら odd を表示
class EvenOdd {
    public static void main(String[] args) {
        int n = 13;
        System.out.println(n % 2 == 0 ? "even" : "odd"); // odd
    }
}
Java

例題3: 割り算と余りの両方を出す

  • 課題: 15 ÷ 4 の「商」と「余り」をそれぞれ表示
class QuotientRemainder {
    public static void main(String[] args) {
        int a = 15, b = 4;
        int q = a / b;   // 商
        int r = a % b;   // 余り
        System.out.println("q=" + q + ", r=" + r); // q=3, r=3
    }
}
Java

例題4: 1円玉を使わずに支払えるか

  • 課題: 金額 n 円が、5円玉と10円玉だけで支払えるなら true
class Coins {
    public static void main(String[] args) {
        int n = 135;
        boolean canPay = n % 5 == 0;
        System.out.println(canPay); // true
    }
}
Java

練習問題(チャレンジ)

  • 問題1: 18 / 518 / 5.0 の出力の違いを確かめる
  • 問題2: x=7 のとき、x += 4; x--; の後の x の値は?
  • 問題3: n=28 のとき、n % 6 の結果は?(理由も説明できるとなお良い)
  • 問題4: (3 + 2) * (8 - 5) / 2 の計算結果を出力するプログラムを書いてみる
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました