Javaの「++」を前後につけるとどう違うのか調べてみた
auです。
iの値をプラス1したいなーという時に、「i++」という書き方をよくします。
しかし、「++i」としてもできるようなので、違いがあるのかなーと調べてみました。
public class Main { public static void main(String[] args) { int i, j; // 1 i = 0; i++; System.out.printf("i: %d\n", i); // 2 i = 0; ++i; System.out.printf("i: %d\n", i); // 3 i = 1; j = 2; j = i++; System.out.printf("i: %d, j: %d\n", i, j); // 4 i = 1; j = 3; j = ++i; System.out.printf("i: %d, j: %d\n", i, j); } }
i: 1 i: 1 i: 2, j: 1 i: 2, j: 2
1. i++
これは普通に1が加算されています。
何ももんぢあないですね。
2. ++i
これも問題なく1が加算されているように見えます。
3. j = i++;
iを1、jを2で初期化し、i++で加算してjに代入しているような処理です。
結果を見ると
i: 2, j: 1
となっています。
jにiの値を代入した後に、iが加算されているような処理になっているようです。
4. j = ++i;
iを1、jを2で初期化し、++iで加算してjに代入しているような処理です。
結果を見ると
i: 2, j: 2
となっています。
iに1を足した後に、jに代入している処理になっています。
まとめ
3の処理は
j = i; i++
4の処理は
i++; j = i;
というような処理になっているようです。
これは可読性的なところで使い分けるべきなのだろうか悩みますね・・・。