[Java] インクリメント・デクリメントと計算式の短縮

By | 2017年3月20日

以前、インクリメントとデクリメントについて少し紹介しました。

今回は、インクリメントとデクリメントのさらに詳しい挙動と計算式を短縮して書く方法について紹介します。

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

改めてこれらについて紹介します。

変数の値を 1 だけ変化させる処理はよく行われるので、名前が付けられています。

値を 1 増やすことをインクリメント、1 減らすことをデクリメントと呼びます。

基本的な書き方は以下の通りです。

i++; // インクリメント (i = i + 1 と同じ)
i--; // デクリメント (i = i - 1 と同じ)

使用例は以下の通りです。

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

        int a = 0;
 
        System.out.println("aの値は" + a);
 
        a++;
 
        System.out.println("aの値は" + a);
 
        a--;
 
        System.out.println("aの値は" + a);
    }
}

プログラムの実行結果です。

インクリメントとデクリメントの動作例

前置と後置の違い

インクリメントとデクリメントには、もう一つの書き方があります。

次のように、記号(++ または --)を変数の前に書いても同じように値を変化させることができます。変数の前に記号を書く場合を前置、後に記号を書く場合を後置と呼びます。

厳密な動作は前置と後置で異なります。

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

        int a = 0;
 
        System.out.println(a++);
        System.out.println(a);
 
        a = 0; // 値を0に再設定
 
        System.out.println(++a);
        System.out.println(a);
    }
}

実行結果です。

前置と後置でインクリメント・デクリメントの動作が変化する例

このように、後置の場合はその行の処理が終わった後で変数の値が変わります。

しかし、前置の場合はその行が実行されるとき(直前)に値が変化します。

計算式の短縮

変化させる値が 1 以外のときも、計算式を短くすることができます。

短縮可能な計算式と、その短縮形を次の表にまとめます(変数を i 、変化させる値を 5 とします)。

計算の種類 計算式 短縮系
加算 i = i + 5 i += 5
減算 i = i - 5 i -= 5

またこの短縮形は、掛け算や割り算、あまりの計算の場合も使うことができます。

計算の種類 計算式 短縮系
乗算 i = i * 5 i *= 5
徐算 i = i / 5 i /= 5
剰余 i = i % 5 i %= 5

短縮した計算式の使用例

次のプログラムは、ループの度に変数の値を 2 で割ります。

public class Test {
 
    public static void main(String args[]) {
 
        int number = 32;
 
        for(int i = 0; i < 5; i++) {
 
            // number = number / 2; の短縮
            number /= 2;
 
            System.out.println(number);
        }
    }
}

実行結果です。

ループの度に変数を2で割るプログラムの例

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です