【Java入門講座】4章.計算の基本と四則演算や演算子の使い方

Java入門レッスン

☜前の章へ 変数の使い方(宣言・代入・型・出力)
☞次の章へ 文字列Stringの基本と比較方法まで


【Java入門講座】は全10章から構成される、初心者向けのJava学習コンテンツです。1章から10章まで学習して頂くことでJavaの基礎を学習することができます。

この記事で分かること
  1. Javaの計算方法
  2. インクリメント・デクリメントのやり方
  3. 前置と後置の違い
  4. 演算子の優先順位と優先順位一覧
  5. 型変換(キャスト)のやり方

この章では、Javaでの基本的な計算方法について学んでいきます。

インクリメントなどよく分からない単語があると思いますが、1つ1つ覚えていきましょう。

普通の計算方法から効率的な計算方法まで解説していきます。

Javaの計算方法(足し算・引き算・割り算・掛け算・剰余算)

演算子一覧

演算子名前記述例意味
+加算演算子a + baにbを加える
減算演算子a – baからbを引く
*乗算演算子a * baにbを掛ける
/除算演算子a / baをbで割る
%剰余演算子a % baをbで割った余り
表:Javaの演算子

Javaの計算は上記の演算子を使用して行います。

1つ1つ確認していきましょう。

Javaの計算方法:足し算

足し算の仕方
  • 1 + 1
public class App {
    public static void main(String[] args) {

    int add;
    
    add = 1 + 1;
    
    System.out.println("足し算の結果は" + add + "です。\n");

    System.out.printf("足し算の結果は%dです。\n", add);
    }
}

出力結果

足し算の結果は2です。

足し算は以下のように行っています。

 add = 1 + 1;

足し算は日常生活で足し算をする時と同じように、1 + 1で行うことが出来ます。

Javaの計算方法:引き算

引き算の仕方
  • 5 – 2
public class App {
    public static void main(String[] args) {

        int sub;
        
        sub = 5 - 2;
        
        System.out.println("引き算の結果は" + sub + "です。\n");

    }
}

出力結果

引き算の結果は3です。

引き算は以下のように行っています。

 sub = 5 - 2;

日常生活で引き算をする時と同じように、5 – 2で行うことが出来ます。

Javaの計算方法:掛け算

掛け算の仕方
  • 4 * 4
public class App {
    public static void main(String[] args) {

        int mul;
        
        mul = 4 * 4;
        
        System.out.println("掛け算の結果は" + mul + "です。\n");

    }
}

出力結果

掛け算の結果は16です。

掛け算は以下のように行っています。

mul = 4 * 4;

日常生活で掛け算をする時は「4 × 4」としますが、Javaでは*(アスタリスク)を使います。

Javaの計算方法:割り算

割り算の仕方
  • 6 / 2
public class App {
    public static void main(String[] args) {

        int div;
        
        div = 6 / 2;
        
        System.out.println("割り算の結果は" + div + "です。\n");

    }
}

出力結果

割り算の結果3です。

割り算は以下のように行っています。

 div = 6 / 2;

日常生活で割り算をする時は「6 ÷ 2」としますが、Javaでは/(スラッシュ)を使います。

Javaの計算方法:剰余算

剰余算とは、割り算の余りを求める計算のことです。

剰余算の仕方
  • 8 % 3
public class App {
    public static void main(String[] args) {

        int rem;
        
        rem = 8 % 3;
        
        System.out.println("剰余算の結果は" + rem + "です。\n");

    }
}

出力結果

剰余算の結果2です。

8を2で割ると3余り2になるため、出力結果は2になります。

剰余算は以下のように行っています。

 rem = 8 % 3;

剰余算には%(パーセント)を使います。

Javaの変数を使った計算方法

public class App {
    public static void main(String[] args) {

        int add = 1;

        add = add + 1;

        System.out.println("足し算の結果は" + add + "です。");

    }
}

出力結果

足し算の結果は2です。

このように、変数addに1を加算して、addに代入をすることもできます。

Javaのインクリメントとデクリメントのやり方

インクリメントの仕方
  • 変数名++;
  • ++変数名;
デクリメントの仕方
  • 変数名- -;
  • – -変数名;

先ほどは、add + 1という形で1を足しました。
1だけ足す、1だけ引くという計算は多々行われます。

そのため、簡単に計算ができるように、インクリメント演算子(++)とデクリメント演算子(- -)というものがあります。

1だけ足すことをインクリメント、1だけ引くことをデクリメントと言います

インクリメント演算子とデクリメント演算子

演算子名前記述例意味
++インクリメント演算子++a or a++aに1を加える
– –デクリメント演算子– -a or a- –aから1を引く
表:インクリメント演算子とデクリメント演算子

変数の前に書くことを前置、後ろに書くことを後置と言います。

public class App {
    public static void main(String[] args) {

        int add = 1;
        int sub = 2;
    
        add++;
        sub--;
    
        System.out.printf("インクリメントの結果は%dです。\n", add);
        System.out.printf("デクリメントの結果は%dです。\n", sub);
    
        ++add;
        --sub;
    
        System.out.printf("インクリメントの結果は%dです。\n", add);
        System.out.printf("デクリメントの結果は%dです。\n", sub);

    }
}

出力結果

インクリメントとデクリメントの結果

このように簡単に、プラス1、マイナス1の計算を行うことが出来ます。

Javaの前置と後置の違い

先ほどの計算結果を見て不思議に思いませんでしたか?
add++も++addもaddに1を加えました。何か違いがあるのでしょうか?
実は代入の時に違いが見られます。

まずは後置の場合を見てみましょう。

public class App {
    public static void main(String[] args) {

        int a = 2;
        int b;

        b = a++;

        System.out.printf("aの値は%dです。\n", a);
        System.out.printf("bの値は%dです。\n", b);

    }
}

出力結果

aの値は3です。Bの値は2です。

上記の例ではbに3が入りそうですが、実際には2が代入されます。

++がaの後ろ、つまり後置の場合は、aがインクリメントされる前に、aの値がbに代入されます
代入された後にaがインクリメントされます

以下と同じことが行われています。

public class App {
    public static void main(String[] args) {

        int a = 2;
        int b;

        b = a;
        a = a + 1;

        System.out.printf("aの値は%dです。\n", a);
        System.out.printf("bの値は%dです。\n", b);

    }
}

前置の場合も確認してみましょう。

public class App {
    public static void main(String[] args) {

        int a = 2;
        int b;

        b = ++a;

        System.out.printf("aの値は%dです。\n", a);
        System.out.printf("bの値は%dです。\n", b);

    }
}

出力結果

aの値は3です。Bの値は3です。

前置の場合は、bの値が3になっています。
つまり、aがインクリメントされた後に、代入が行われています

以下と同じことが行われています。

public class App {
    public static void main(String[] args) {

        int a = 2;
        int b;

        a = a + 1;
        b = a;

        System.out.printf("aの値は%dです。\n", a);
        System.out.printf("bの値は%dです。\n", b);

    }
}

Javaの複合代入演算子の使い方

これまで、「a = a + 5」この様に、ある変数に加算したい場面が出てきました。

1を加算(インクリメント)、減算(デクリメント)する場合の簡単な書き方は覚えましたが、1以外を加算等する場面でも、簡単に書く方法があります。

簡単に書くためには複合代入演算子を使います。

複合代入演算子

演算子記述例意味
+=a += 2a = a + 2
-=a -= 3a = a – 3
*=a *= 5a = a * 5
/=a /= 7a = a / 7
%=a %= 10a = a %10
表:複合代入演算子

「a = a + 2」は「a += 2」と書いても同じ結果になります。
aを1文字短縮することが出来ました。

public class App {
    public static void main(String[] args) {

        int num1 = 5;
        int num2 = 5;
        int num3 = 5;
        int num4 = 4;
        int num5 = 5;
        int a = 2;

        num1 += a;
        num2 -= a;
        num3 *= a;
        num4 /= a;
        num5 %= a;

        System.out.printf("num2の値は%dです。\n", num2);
        System.out.printf("num3の値は%dです。\n", num3);
        System.out.printf("num4の値は%dです。\n", num4);
        System.out.printf("num5の値は%dです。\n", num5);
        System.out.printf("num1の値は%dです。\n", num1);

    }
}

出力結果

複合代入演算子の計算結果

Javaの演算子の優先順位とは?優先順位の一覧

「num = 20 + 4 / 2」という計算があった時は、先に「4 / 2」の計算が行われます。
次に「20 + 2」の計算が行われ、最後にnumに代入されます。

 このように演算子には計算の優先順位があります。

以下に表は演算子の優先順位を一覧化したものです。確認してみて下さい。

演算子の優先順位

優先順位演算子形式機能結合性
1()x(y)メソッドの呼び出し
[]x[y]配列の要素
x . yメンバ参照
++x++後置インクリメント
– –x- –後置デクリメント
2++++x前置インクリメント
– –‒x前置インクリメント
++x符号
-x符号の反転
~~xビット否定
!!x論理否定
3newnew x()オブジェクト生成
(型名)(x)yキャスト
4x * y乗算
/x / y除算
%x % y剰余算
5+x + y加算
x ‒ y減算
6<< x << y左シフト
>> x >> y右シフト
>>> x >>> y符号なし右シフト
7x < y左の方が小さい
<=x <= y左が右以下
x > y左の方が大きい
>=x >= y左が右以上
instanceof型比較
8==x == y等しい
!=x != y等しくない
9&x & yビット積
10^x ^ yビット単位排他的論理和
11|x | yビット和
12&&x && y論理積
13||x || y論理和
14?:x y : z条件演算子
15=x = y代入
+=x += y加算代入
-=x -= y減算代入
*=x *= y乗算代入
/=x /= y除算代入
%=x %= y剰余代入
<<=x <<= y左シフト代入
>>=x >>= y右シフト代入
&=x &= yビット積代入
|=x |= yビット和代入
^=x ^= yビット単位排他的論理和代入
<<=左シフト代入
>>=右シフト代入
>>>=符号なし右シフト代入

Javaの型変換(キャスト)のやり方

型変換とは、データ型を変更することを言います。

例えば、float型をint型に変換することを型変換やキャストと言います。

public class App {
    public static void main(String[] args) {

        float floatValue = 3.14f;
        System.out.printf("floatValueの値は%fです。\n", floatValue);

        //float型をint型にキャスト(型変換)すると小数点以下が切り捨てられる
        int intValue = (int) floatValue;
        System.out.printf("intValueの値は%dです。\n", intValue);

    }
}

出力結果

キャストの結果

(int) floatValueと書いている箇所でfloatValueの型をfloat型からint型へ型変換を行なっています。

float型からint型へ型変換を行うと、小数点以下は切り捨てられます。


練習問題

加算で7を求め、変数に代入し、コンソールに表示しましょう

public class App {
    public static void main(String[] args) {
        // 乗算で7を求め、変数に代入
        int result = 2 + 5;

        // 結果の表示
        System.out.println("乗算の結果: " + result);
    }
}

減算で3を求め、変数に代入し、コンソールに表示しましょう

public class App {
    public static void main(String[] args) {
        // 乗算で7を求め、変数に代入
        int result = 6 - 3;

        // 結果の表示
        System.out.println("減算の結果: " + result);
    }
}

乗算で10を求め、変数に代入し、コンソールに表示しましょう

public class App {
    public static void main(String[] args) {
        // 乗算で7を求め、変数に代入
        int result = 2 * 5;

        // 結果の表示
        System.out.println("減算の結果: " + result);
    }
}

除算で3.33を求め、変数に代入し、コンソールに表示しましょう

public class App {
    public static void main(String[] args) {
        // 除算で3.33を求め、変数に代入
        float result = 10.0f / 3;

        // 結果の表示
        System.out.printf("除算の結果: %.2f", result);
    }
}

①で7を代入した変数を2で剰余し、変数に代入し、コンソールに表示しましょう

public class App {
    public static void main(String[] args) {
        // 乗算で7を求め、変数に代入
        int result = 2 + 5;
        // 7を2で剰余し、変数に代入
        int num = result % 2;

        // 結果の表示
        System.out.println("剰余の結果: " + num);
    }
}

変数numはどのように値が変化するでしょうか?+=から5つ答えましょう

 int num = 7;

    num += 2;
    num -= 3;
    num *= 2;
    num /= 4;
    num %= 2;

9→6→12→3→1

numの値はいくつですか?

int num;

    num = 2 * 5 + 3;

13


☜前の章へ 変数の使い方(宣言・代入・型・出力)
☞次の章へ 文字列Stringの基本と比較方法まで