🌟

【Java】インクリメントで a++と++aの違い。

2023/04/30に公開

はじめに

Javaの演算子でインクリメント・デクリメントを学習していると
++aなのかa++なのかで計算結果が異なるらしいが
混乱してしまったので一度整理しようと思いました。

この記事でわかること

  1. ++a と a++ の違い

インクリメント演算子とは

Integer型の 変数a に1だけ増やしたい場合
算術演算子を使うと

int a = 10;
a = a+1;

代入演算子を使うと

a += 1;

と書く。

これをもっと楽に書く方法がインクリメント演算子で、

a++;

++a;

と書く。

a++と++aの違い

どちらも

a= a+1;

と同じなのだが、
a++; の場合
その時点では+1を行なっておらず、
aを出力後に+1をするらしい。
++a; の場合
+1を行なった後に
aを出力するらしい。

なので、
どちらも

a=a+1;

だが、
左辺を出力して右辺を処理するのがa++
右辺を処理して左辺へ代入後に左辺を出力するのが++a
と解釈した。
出力の違いはこちら

int a = 10;
System.out.println(a++); //出力結果は10
System.out.println(a);   //出力結果は11
int a = 10;
System.out.println(++a); //出力結果は11
System.out.println(a);   //出力結果は11

実際の計算

int a = 10;

int b = a++ +  a + a-- - a-- + ++a + ++a +  a;
//aの中身はこんな感じ
System.out.println( 10 + 11 +  11 -  10 +  10 +  11 + 11); //54
System.out.println(b); //54

参考(引用)文献

  • スッキリわかるJava入門(第三版)
  • JavaSilver SE11 問題集

Discussion