🐷

Javaにおけるインクリメントの前置、後置の違い

2021/12/31に公開

そもそもインクリメントって

数値型の変数を1だけ増やしたい時に使う演算子だ。
例えば以下のように使う。

zenn.java
int num = 0;
System.out.println(num); //0
num++;
System.out.println(num); //1

インクリメントがない言語だと代入し直す手間が発生する

zenn.rb
num = 0
num += 1

これを見るとインクリメントの方がスッキリしている事が分かるだろう。

前置、後置で違う?

で、本題。
インクリメント演算子は下記の通り2通りの書き方がある。

int num = 0;
num++;
++num;

先に答えを言ってしまうと前置と後置はそれぞれ評価されるタイミングが違うのだ。

具体例を見て頂きたい。

int num1 = 0;
//インクリメントした後の値が出力される。
System.out.println(++num1); //1

int num2 = 0;
//num2が出力されてからインクリメントされる。
System.out.println(num2++); //0
System.out.println(num2); //1

上記の通り前置インクリメントは1増えた値が評価され、後置は元の値を評価した後インクリメントされる。

おまけ

インクリメントがただ値を1増やすだけでなく評価もすることを踏まえると少しコードを簡潔に書く事ができる。

int start = 0;
int end = 3;
while(start < end){
	System.out.println(start);
	start++;
}

これを

int start = 0;
int end = 3;
while(start < end){
	// startの値の出力とインクリメントを同時に行う。
	System.out.println(start++);
}

Discussion