はじめに
こんにちは。
プログラミング初心者Wakinozaと申します。
Java勉強中に調べたことを記事にまとめています。
十分気をつけて執筆していますが、なにぶん初心者が書いた記事なので、理解が浅い点などあるかと思います。
記事を参考にされる方は、初心者の記事であることを念頭において、お読みいただけると幸いです。
間違い等あれば、指摘いただけると助かります。
対象読者
- Javaを勉強中の方。
- Java SE Bronze試験を勉強中の方。
- Javaのインクリメント/デクリメント演算子をざっくり理解したい方。
目次
1. インクリメント/デクリメント演算子
2. 後置記法と前置記法
本文
1. インクリメント/デクリメント演算子
変数に1だけ足したり引いたりしたい場合に使うのが、インクリメント/デクリメント演算子です。
「++」がインクリメント演算子で、変数に1を加算します。
「--」がデクリメント演算子で、変数に1を減算します。
以下のコードをご覧ください。
int a = 100;
int b = 100;
a++;
b--;
System.out.println(a); //結果:101
System.out.println(b); //結果:99
「a++」は「a = a + 1」もしくは「a += 1」と同じ挙動を、「b--」は「b = b - 1」もしくは「b -= 1」と同じ挙動をしています。
プログラミングの途中で、変数に1加算したり減算したりする場面はよくあります。
そんな時、インクメント/デクリメント演算子を使うと、コードが簡潔になり、可読性が向上します。
2. 後置記法と前置記法
インクリメント/デクリメント演算子は、変数の前に書くことも、変数の後ろに書くこともできます。++iのように変数の前に書く記法を前置記法、i++のように変数の後に書く記法を後置記法と呼びます。
インクリメント/デクリメント演算子単独で用いる場合は、前置記法も後置記法も挙動に違いはありません。
しかし、他の演算子と一緒に用いた場合、前置記法と後置記法では挙動が異なるので注意が必要です。
以下のコードをご覧ください。
int a = 100;
int b = 100;
int c = ++a; //前置記法
int d = b++; //後置記法
System.out.println(c); //結果:101
System.out.println(d); //結果:100
同じ数字に同じインクリメント演算子を用いただけなのに、変数cとdの結果が違ってしまっています。
どうしてこのような違いが生まれるのでしょうか。
前置記法も後置記法も、変数に1を加算するという挙動は同じです。両者の違いは、他の演算子に値を渡すタイミングと、1を加算するタイミングの順番です。
上の変数cとdの処理を分解してみましょう。
前置記法「int c = ++a」の場合
1. インクリメント演算子が変数aに1を加算
2. 代入演算子が変数aの値をcに代入
3. インクリメント演算子で加算後の値が変数cに代入されるため、結果は101となります。
後置記法「int d = b++」の場合
1. 代入演算子が変数bの値をdに代入
2. インクリメント演算子が変数bに1を加算
3. インクリメント演算子の加算が変数dに反映されないため、結果は100となります。
他の演算子と一緒に用いると、前置記法も後置記法かによって加算のタイミングが異なることがわかります。
デクリメント演算子も、同様です。
思わぬ不具合の原因にもなるので、インクリメント/デクリメント演算子は単独で用いた方が良いでしょう。
まとめ
- インクリメント演算子「++」は1を加算するときに、デクリメント演算子「--」は1を減算するときのに用います
- 演算子を変数の前に書くこと(前置記法)も、後に書くこと(後置記法)もできる。単独で用いる場合は、どちらに書いても同じ挙動です
- 他の演算子と一緒に用いると、前置記法と後置記法では挙動が異なるので注意が必要です
記事は以上です。
最後までお読みいただき、ありがとうございました。
参考文献
この記事は以下の情報を参考にして執筆しました。
- [徹底攻略 Java SE Bronze 問題集]
- [スッキリわかるJava入門 第4版]
- [4.1 演算子(算術演算子、代入演算子、比較演算子、論理演算子、ビット演算子など)~Java Basic編](最終更新 2024-07-28)(https://qiita.com/KenyaSaitoh/items/151d068cef70aa2f8ac5) (参照 2025-04-09)