Java | 算術演算子

Java Java
スポンサーリンク

算術演算子を初心者向けにかみ砕いて、動く例と練習問題(解答付き)まで用意します。各コードはそのまま javac / java で試せるように書きます。さっそくいきます!

Javaで数を計算する記号です。主なものは次の5つ。

  • + (足し算)
  • - (引き算)
  • * (掛け算)
  • / (割り算)
  • % (余り/剰余)

基本の例(直感)

int a = 10 + 4;   // a は 14
int b = 7 - 3;    // b は 4
int c = 6 * 3;    // c は 18
int d = 7 / 3;    // d は 2  ← 整数同士の割り算は小数切り捨て
int e = 7 % 3;    // e は 1  ← 余り(7÷3 の余り)
Java

ポイント:7 / 3 は数学的には 2.333… ですが、int / int なら 小数以下は切り捨て られて 2 になります。


型(データ型)に注意しよう

演算する値のint, long, float, double)によって結果の型が決まります。Javaには自動で「より精度の高い型」に変換するルールがあります(型昇格)。

優先度(高→低):doublefloatlongint(※小さいものから大きいものへ変換されるイメージ)

例:

double x = 10 + 4.0;   // 右辺は double として扱われ、結果は 14.0
double y = 10 / 4.0;   // 2.5(少なくとも一方が浮動小数点なら小数が残る)
int z    = 10 / 4;     // 2(両方 int なので小数部分は切り捨て)
Java

もし整数同士の割り算で小数の答えが欲しいなら、片方を double にキャストするか、最初から浮動小数点リテラルを書く:

double correct = (double)10 / 4;  // 2.5
// または
double correct2 = 10 / 4.0;       // 2.5
Java

割り算とゼロ

  • 整数を 0 で割ると実行時例外(ArithmeticException)になります。
int a = 1 / 0;  // 実行時に java.lang.ArithmeticException: / by zero
Java
  • 浮動小数点(double/float)を 0.0 で割ると例外にはならず、InfinityNaN が返ります。
double d = 1.0 / 0.0;   // Infinity
double n = 0.0 / 0.0;   // NaN (Not a Number)
Java

→ 実務では割る前に if (b == 0) のチェックをするのが鉄則。


剰余演算子(%)の注意点(負の数)

% は「余り」を返しますが、符号(正負)は被除数(割られる数)と同じ符号になります(Javaの仕様)。

例:

System.out.println( 7 % 3);   // 1
System.out.println(-7 % 3);   // -1
System.out.println( 7 % -3);  // 1
System.out.println(-7 % -3);  // -1
Java

優先順位(演算子の順番)

*, /, %+, - より先に計算されます。明示的に順序を変えたいときは () を使いましょう。

例:

int r = 2 + 3 * 4;   // 2 + (3*4) = 14
int s = (2 + 3) * 4; // (5)*4 = 20
Java

実際に動くサンプル(ファイル形式)

下は CalcExample.java として保存して実行できます。

// CalcExample.java
public class CalcExample {
    public static void main(String[] args) {
        int a = 7, b = 3;
        System.out.println("a + b = " + (a + b));  // 10
        System.out.println("a - b = " + (a - b));  // 4
        System.out.println("a * b = " + (a * b));  // 21
        System.out.println("a / b = " + (a / b));  // 2 (整数割り算)
        System.out.println("a % b = " + (a % b));  // 1 (余り)

        // 浮動小数点で割る
        System.out.println("a / (double)b = " + (a / (double)b)); // 2.3333333333333335

        // 0で割るチェック
        int divisor = 0;
        if (divisor != 0) {
            System.out.println("safe divide: " + (a / divisor));
        } else {
            System.out.println("割る数が 0 です — エラーを防ぐため実行しません");
        }
    }
}
Java

コンパイル/実行:

javac CalcExample.java
java CalcExample

よくある「つまずきポイント」と対処法

  1. 「整数同士だと小数が出ない」
    → 必要なら (double) でキャストするか片方を 4.0 のようにする。
  2. 「ゼロで割ってしまい例外が出る」
    → 割る前に if (b == 0) チェックする。
  3. 「余りの符号が期待と違う」
    → Javaは余りの符号を被除数(最初の数)に合わせます。負の数の余りに注意。
  4. 「演算の順序」
    () を使って意図を明確にする。

練習問題(初心者向け)

各問題の下に解答と簡単な解説を用意します。まず自分で考えてから確認してね。

問1

int x = 10 / 4;
Java

x の値は何になる?

答え2
解説int / int なので小数は切り捨て。


問2

double y = 10 / 4;
double z = 10 / 4.0;
Java

yz はそれぞれ何になる?

答えy = 2.0(右辺が int どうしで 2、代入で 2.0 に変換)
z = 2.5(右辺に 4.0 があるので浮動小数点計算)


問3

int a = -7 % 3;
Java

a の値は?

答え-1
解説:余りの符号は被除数(-7)に合わせられる。


問4

次の式の結果は?

int v = 2 + 3 * 4 - 6 / 3;
Java

答え2 + (3*4) - (6/3) = 2 + 12 - 2 = 12


問5(少し応用)

10 を 3 で割ったときの商(小数まで)を double 型で求めるコードを書きなさい。

模範解答

double result = 10 / 3.0;          // 3.3333333333333335
// または
double result2 = (double)10 / 3;
Java

最後に — おすすめの練習

  • 自分でいくつかの式を書いて System.out.println() してみる(整数/浮動小数点/負の数を混ぜる)。
  • 割り算の前に if でゼロチェックを入れる習慣をつける。
  • 余り演算 (%) を使って「偶数/奇数判定」や「時間の繰り上げ(例:秒→分)」などの簡単なプログラムを作ると理解が深まります。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました