Javaの算術演算子(四則演算)を極める!余りの計算やシフト演算も覚える。

Javaの算術演算子(四則演算)を極める!余りの計算やシフト演算も覚える。

この記事では、Javaでの計算方法やそのために使用する演算子について勉強していく。

学校で習った数学と共通する部分もあるが、プログラミングならではの気をつけておきたい事柄も多くある。この記事では、前半では初めてプログラミングをする初心者でもわかる内容を、後半ではより応用的な事柄を説明していくので、必要な部分を実際にコードを書きながら読んでいってほしい。

UgoCompiler

当サイトでは、自作のJavaCompiler「UgoCompiler」を用意している。UgoCompilerを使えばオンライン上で気軽に自分の書いたコードを実行することができる。 登録なしですぐに使うことができるので、ぜひ試してみてほしい! (下の写真をクリックすると新しいタブで開きます。)

Javaの演算子一覧

まずはJavaで使用する演算子を一覧で確認しよう。

「演算子」とはプログラム内で使われる指示記号のことで、Javaでは以下のような演算子を使用することができる。

種類役割記号
比較演算子比較<, >, <=, >=
等式==, !=
論理演算子論理和・論理積・否定&&, ||, !
三項演算子条件? :
算術演算子計算+, -, *, /, %
単項演算子インクリメントvar++, ++var
デクリメントvar–, –var
数値変換+var, -var
シフト演算子シフト<<, >>, >>>
ビット演算子論理和・論理積・
排他的論理和・否定
& ,| ,^,~
代入演算子代入=, +=, -=, *=, /=, %=,
&=, ^=, |=, <<=, >>=, >>>=
Javaの演算子一覧

算術演算子の使い方

では、Javaにおける算術演算子の使い方を確認しよう。

足し算・引き算・掛け算・割り算

まずは足し算・引き算といった算数の授業で習ったような計算式について記述を確認しよう。

// 足し算
System.out.println("足し算 5 + 4 = " + (5 + 4));

// 引き算
System.out.println("引き算 12 - 8 = " + (12 - 8));

// 掛け算
System.out.println("掛け算 5 × 4 = " + (5 * 4));

// 割り算
System.out.println("割り算 25 ÷ 5 = " + (25 / 5));

掛け算と割り算を示す記号が、日本の数式記述と異なる点に気を付けよう。

結果が小数点を含む割り算

割り算の結果が小数点を含む場合、使用している変数のデータ型に注意しなければならない。

int型においては、小数点を含む数値は格納できず、小数点以下は切り捨てられる。

// intで割り算した場合は少数点は切り捨てられる
System.out.println("割り算(少数点切り捨て) 26 ÷ 4 = " + (26 / 4));
 
// doubleで割り算した場合は少数点は含む
System.out.println("割り算(少数点含む) 26d ÷ 4d = " + (26d / 4d));

割り算の余りの求め方

プログラミングにおいては割り算の余りを求める計算よく使われる。

割り算をした結果の余りを求めるには「%(パーセント記号)」を使用する。

System.out.println(17 % 3); // 2が出力される

17割る3の余りは2なので2が出力される。

これを応用して下のようなコードを書けば、交互にTRUE・FALSEを出力するコードが書ける。

表の偶数行のみ背景の色を変えたい場合などにこの計算を利用できる。

for (int i = 0; i < 12; i++) {
	System.out.println(i % 2);
}

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

インクリメントとデクリメントはプログラミングでよく使用される。

  • インクリメント – 変数に代入されている数値をひとつ上に上げること。「++」を使って表現する。

  • デクリメント – 変数に代入されている数値を数値をひとつ下に下げること。「–」を使って表現する。

インクリメントの例を書くと以下のようになる。

int number = 7;
System.out.println(number); // 7が出力される
number++;
System.out.println(number); // 8が出力される

インクリメントは変数の前にも後にも記述することができるがそれぞれにインクリメントがおこなわれるタイミングが異なる。

int firstNumber = 12;
System.out.println(firstNumber++); // 12が出力される

int secondNumber = 12;
System.out.println(++secondNumber); // 13が出力される
class ArithmeticOperatorClass {

    public static void main(String[] args) {

        // 足し算
        System.out.println("足し算 5 + 4 = " + (5 + 4));

        // 引き算
        System.out.println("引き算 12 - 8 = " + (12 - 8));

        // 掛け算
        System.out.println("掛け算 5 &#x2716;&#xfe0f; 4 = " + (5 * 4));

        // 割り算
        System.out.println("割り算 25 &#x2797; 5 = " + (25 / 5));

        // intで割り算した場合は少数点は切り捨てられる
        System.out.println("割り算(少数点切り捨て) 26 &#x2797; 4 = " + (26 / 4));

        // doubleで割り算した場合は少数点は含む
        System.out.println("割り算(少数点含む) 26d &#x2797; 4d = " + (26d / 4d));

        // Errorとなるパターン
        // System.out.println("0を含む割り算 12 &#x2797; 0 = " + (12 / 0));

        // Infinityとなるパターン
        System.out.println("0を含む割り算 12d &#x2797; 0 = " + (12d / 0));

        // 割り算の余りを求める場合
        System.out.println("25 &#x2797; 6の余り  = " + (25 % 6));

        // インクリメント
        int number = 7;
        System.out.println(++number);
        System.out.println(number++);

        // デクリメント
        System.out.println(number--);
        System.out.println(--number);
    }
}