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- 小数の結果がほしいとき: どちらか一方を小数型にする(
doubleやfloat)。
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型が違うときの自動変換(型昇格)
- ルール:
intとdoubleを混ぜて計算すると、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);
}
}
Java0で割るとどうなる?
- 整数の割り算 (
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はエラー、小数はInfinityやNaN。違いを知っておくとデバッグが楽になります。
手を動かす例題
例題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 / 5と18 / 5.0の出力の違いを確かめる - 問題2:
x=7のとき、x += 4; x--;の後のxの値は? - 問題3:
n=28のとき、n % 6の結果は?(理由も説明できるとなお良い) - 問題4:
(3 + 2) * (8 - 5) / 2の計算結果を出力するプログラムを書いてみる

