本文へスキップ
BecomeCoder

Java文法コース · 第3章 演算子 ― 値を計算し、比較し、組み合わせる · レッスン12

インクリメント・デクリメントと複合代入 ― 短く書く

ブラウザで完結

導入

「1増やして代入し直す」ような処理は、プログラムの中でとても頻繁に出てきます。毎回 count = count + 1; と書くのは冗長なので、Javaには短く書ける専用の演算子があります。

説明

public class Main {
    public static void main(String[] args) {
        int count = 5;
        count++;                  // count = count + 1 と同じ
        System.out.println(count);  // 6

        count--;                  // count = count - 1 と同じ
        System.out.println(count);  // 5

        int total = 100;
        total += 20;               // total = total + 20 と同じ
        System.out.println(total);  // 120
        total *= 2;                // total = total * 2 と同じ
        System.out.println(total);  // 240

        int i = 3;
        System.out.println(i++);   // 先に評価してから+1(3が表示される)
        System.out.println(i);     // 4
        System.out.println(++i);   // 先に+1してから評価(5が表示される)
    }
}
  • count++(後置インクリメント)・count--(後置デクリメント)… count を1増やす/減らす、count = count + 1 の省略形です。
  • += -= *= /= %=(複合代入演算子)… 変数 = 変数 演算子 値 を短くまとめた書き方です。total += 20total = total + 20 と同じです。
  • i++++i の違い(後置と前置)は、式の中で使ったときだけ意味が変わります。i++ はまず今の値を使ってから1増やし、++i は先に1増やしてからその値を使います。単独で i++; とだけ書く分には、どちらでも結果は同じです。

やってみよう

下のエディタで total の初期値や += の数値を変えて確かめましょう。i++++i を入れ替えて、表示される数がどう変わるかも観察してみてください。

演習

int point = 1000; から始めて、point += 250; で250増やし、続けて point -= 100; で100減らし、最終的な point を表示してください(結果は 1150)。

ヒント1を見る

point += 250;point = point + 250; と同じです。

ヒント2を見る

続けて point -= 100; してから System.out.println(point);

実際に動かしてみよう

下のエディタにJavaを書いて「実行」を押すと、学習用シミュレータが System.out.println の出力を表示します(本物のJVMではなく、教材の範囲を再現した軽量エンジンです)。クラス・継承・コレクションなども動きます。Scanner で入力を読む例は「標準入力」欄に値を入れてください。本文の例を書き換えて動かしてみましょう(Stream・ラムダ・スレッド・ファイル入出力など一部の機能は対象外です)。

Java — ブラウザ内で実行(学習用シミュレータ)

Javaの教材サブセットを動かす学習用シミュレータを読み込みます(本物のJVMではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。