Javaでプログラミングを行う際、「++」や「–」といった、プログラムを触ったことが無い方には見慣れない演算子が頻繁に登場します。
本記事では、Javaで利用可能なインクリメント演算子とデクリメント演算子の使い方についてサンプルコードを掲載しながらご紹介していきます。
目次
インクリメント演算子・デクリメント演算子とは
インクリメント演算子は「++」で表現し、対象の値を1つ増やす際に利用します。
反対にデクリメント演算子は「–」で表現し、対象の値を1つ減らす際に利用します。
インクリメント演算子
例えば下記のような加算処理を実施するプログラムがあるとします。
変数「i」の値に「1」を加算して再度変数「i」に格納するだけの簡単な処理です。
i = i + 1
同じ処理をインクリメント演算子を利用して記述すると下記のような形式となります。
i++
デクリメント演算子
デクリメント演算子は、減算処理を実施する際に利用します。
上記サンプルを減算処理に変更して記述したものが下記です。
i = i - 1
同じ処理をデクリメント演算子を利用して記述すると下記のような形式となります。
i--
インクリメント・デクリメント演算子には前置と後置が存在する
インクリメント演算子とデクリメント演算子の記述には「++」「–」を利用することを説明しましたが、記述する際に「前置」と「後置」2種類の記述方法が可能です。
前置での記述
前置での記述方法というのは「++オペランド」や「–オペランド」の書き方を指します。
オペランドの左側に演算子が記述される方法です。
前置で記述した場合、式の中で加算処理や減算処理が実施された後の値が適用されます。
後置での記述
反対に後置での記述方法は「オペランド++」や「オペランド–」の書き方を指します。
オペランドの右側に演算子が記述される方法です。
後置で記述した場合、前置とは反対に加算処理や減算処理が実施される前の値が適用されます。
具体例
文字での説明だと分かりにくいので実際にサンプルで確認してみましょう。
public class Main { public static void main(String[] args) { int i; int result; i = 2; result = ++i; System.out.println("前置インクリメント= " + result); i = 2; result = i++; System.out.println("後置インクリメント= " + result); i = 2; result = --i; System.out.println("前置デクリメント= " + result); i = 2; result = i--; System.out.println("後置デクリメント= " + result); } }
実行結果が下記です。
前置インクリメント= 3 後置インクリメント= 2 前置デクリメント= 1 後置デクリメント= 2
サンプルの結果で確認出来るように、前置で記述した場合には加算や減算処理が実施された後の値が変数に格納されています。
一方で、後置で記述した場合には加算や減算処理を実施する前の値がそのまま変数に格納されていることを確認出来ます。
インクリメント・デクリメント演算子をサンプルで確認
では実際にインクリメント演算子とデクリメント演算子の処理内容を細かくサンプルコードで確認しておきましょう。
前置のインクリメント演算子
まずは前置のインクリメント演算子の動きを確認します。
public class Main { public static void main(String[] args) { int i; int result1; int result2; int result3; i = 2; // 初期化 result1 = i; result2 = ++i; result3 = i; System.out.println("result1の結果: " + result1); System.out.println("result2の結果: " + result2); System.out.println("result3の結果: " + result3); } }
実行結果が下記です。
result1の結果: 2 result2の結果: 3 result3の結果: 3
前置でインクリメント演算子を実行した場合、インクリメント演算子を記述した式の変数に加算された値が格納されています。
後置のインクリメント演算子
次に後置のインクリメント演算子に修正して実行してみます。
public class Main { public static void main(String[] args) { int i; int result1; int result2; int result3; i = 2; // 初期化 result1 = i; result2 = i++; result3 = i; System.out.println("result1の結果: " + result1); System.out.println("result2の結果: " + result2); System.out.println("result3の結果: " + result3); } }
実行結果が下記です。
result1の結果: 2 result2の結果: 2 result3の結果: 3
変更したのは11行目だけですが、出力結果が変わっていることをご確認頂けます。
後置のインクリメント演算子を利用する場合、記述した式のタイミングでは変数に加算前の値が格納されており、後述処理から加算された値が適用されていることが確認出来ます。
前置のデクリメント演算子
では同様に前置のデクリメント演算子についても確認していきます。
今回は少し書き方を変えて、変数に代入せずにそのままコンソール出力してみましょう。
public class Main { public static void main(String[] args) { int i; i = 5; // 初期化 System.out.println("デクリメント演算子使用前: " + i); System.out.println("デクリメント演算子使用時: " + --i); System.out.println("デクリメント演算子使用後: " + i); } }
実行結果が下記です。
デクリメント演算子使用前: 5 デクリメント演算子使用時: 4 デクリメント演算子使用後: 4
前置の記述では、デクリメント演算子使用時の段階で値が減算されています。
後置のデクリメント演算子
では後置のデクリメント演算子でも同様に記述してみましょう。
public class Main { public static void main(String[] args) { int i; i = 5; // 初期化 System.out.println("デクリメント演算子使用前: " + i); System.out.println("デクリメント演算子使用時: " + i--); System.out.println("デクリメント演算子使用後: " + i); } }
実行結果が下記です。
デクリメント演算子使用前: 5 デクリメント演算子使用時: 5 デクリメント演算子使用後: 4
後置の記述では、デクリメント演算子使用時点ではコンソール出力情報が減算されていないことをご確認頂けます。
さいごに: Javaのインクリメント・デクリメント演算子では前置と後置を意識しよう
本記事では、Javaのインクリメント演算子とデクリメント演算子の使い方についてご紹介してきました。
インクリメント・デクリメント演算子の利用方法については簡単ですが、前置と後置により処理のタイミングが異なることを意識しておく必要があります。
作成するプログラムにどちらが適切かを判断して、利用するようにしましょう。
ちなみに「i += 1」でも同じ結果が得られます。