Javaの基礎文法 インクリメント・デクリメント演算(2-9)

記事上広告

変数内のデータに1加算する場合は「a = a + 1」、変数内のデータに1減算する場合は「a = a – 1」となります。

変数内のデータを1加算する場合はインクリメント演算、1減算する場合はデクリメント演算で代用することもできます。

インクリメント演算

インクリメント演算は変数内のデータに1加算するための演算です。演算子には++を利用します。インクリメント演算には前置と後置があります。

演算子 記述例 補足
++(前置) ++a 前加算。加算を行ってから値が評価される
++(後置) a++ 後加算。加算は値が評価されてから行われる

デクリメント演算

デクリメント演算は変数内のデータに1減算するための演算です。演算子には--を利用します。インクリメント演算同様には前置と後置があります。

演算子 記述例 補足
--(前置) --a 前減算。減算を行ってから値が評価される
--(後置) a-- 後減算。減算は値が評価されてから行われる

前置と後置の違い

インクリメントおよびデクリメントには前置と後置があります。今回はインクリメント演算を使って違いを説明します。

前置と後置は単体で利用する場合には違いはありません。

int a = 10;
++a;
int b = 10;
b++;
System.out.println(a);
System.out.println(b);

上記の出力ではどちらも11となります。

しかし、式の途中で利用した場合は違いがある為注意が必要です。

int a = 10;
int b = a++;
int c = 10;
int d = ++c;
System.out.println(b);
System.out.println(d);

上記の出力はbは10となり、dは11となります。

int b = a++;

の行はインクリメント演算と代入演算が行われています。
a内の値は加算される前の値が評価(利用)される為、10が代入されます。

int d = ++c;

の行もインクリメント演算と代入演算が行われています。
d内の値は加算された後の値が評価(利用)される為、11が代入されます。

このように、前置と後置では式の途中で利用される値が異なる為、プログラムが分かりにくくなることからあまり推奨されない記述となります。(試験問題などでは出題されます)

インクリメント・デクリメント演算 サンプルプログラム

以下のプログラムを「Number09.java」という名前でworkフォルダ内に保存します。
保存が完了したら、コマンドプロンプトを起動し、コンパイルおよび実行を行ってみましょう。

実行例

c:\work>javac Number09.java

c:\work>java Number09
11,11
10,11

※実行例はコンパイルから実行までの例を表示しています。

補足説明

前置と後置の違いが分かりにくい場合は、以下のようなイメージで覚えることもできます。

前置は変数内のデータがすぐに加算される

後置は変数内のデータはすぐに加算されず、加算された値が利用できるのは次に同じ変数を利用した時

int a = 10;
System.out.println(++a); //加算が先に実行される為、11

int b = 10;
System.out.println(b++); //この時点では10で利用される

aはすぐに加算される為、11となる。
bが加算されたのが確認できるのは、b++の後に再度bを利用した時。

int b = 10;
System.out.println(b++); //この時点では10で利用される
System.out.println(b); //この時点で初めて11になったのがわかる

ステップアップ

int x = 3;
int y = 5;
System.out.println(++y / x++ * ++x );

上記の出力ではどのような数字が表示されるでしょうか。考えてみましょう。

※算術演算よりもインクリメントの方が先に演算されます。

解答と解説

答え:10

処理1:++y
yの初期値は5でインクリメントが前置になっており6となります
処理2:x++
xの初期値は3でインクリメントが後置になっており3のままとなりますが、次のxは4です
処理3:++x
処理2でxは4になっており、前置きのインクリメントが行われ、5になります
処理4:算術演算
算術演算で利用される値は以下のようになり、結果10となります
6 / 3 * 5

まとめ

  • インクリメント演算は変数内のデータに1加算できる
  • デクリメント演算は変数内のデータに1減算できる
  • インクリメントおよびデクリメントは前置と後置があり変数内の値を変更するタイミングが異なる
参加 ブログランキング

記事頑張って書いたかもねー?と思う方は下を押してもらえるといいかなーなんて
にほんブログ村 IT技術ブログへ
にほんブログ村


Javaランキング

目次へのアクセス
スポンサーリンク
レクタングル

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル