今回から数回に渡り、
「Javaプログラミングにおける
初心者が陥りやすいミス」
についてお話しようと思います。
第一弾は、
「インクリメント演算子と
ディクリメント演算子」
に関する注意点です。
インクリメント演算子
ディクリメント演算子
この演算子は、
単項演算子にというものに
分類されます。
インクリメント演算子は「++」と記述し、
オペランドに1を加算する演算子です。
ディクリメント演算子は「--」と記述し、
オペランドから1を減算する演算子です。
さらに、この演算子を
オペランドの前に記述した場合、
例えば、
++i
--i
のような場合(iは変数)、
「前置インクリメント演算子」
「前置ディクリメント演算子」
と呼びます。
また、この演算子を
オペランドの後ろに記述した場合、
例えば、
i++
i--
のような場合(iは変数)、
「後置インクリメント演算子」
「後置ディクリメント演算子」
と呼びます。
なぜ、同じ演算子で
記述の仕方が2種類あるのでしょうか。
前置と後置の違い
前置と後置の具体的な例を
見ていきましょう。
ここでは、
インクリメント演算子の例を
見ていきます。
例(その1)
int i = 0;
int j = 0;
i++;
++j;
System.out.println(i); ...①
System.out.println(j); ...②
上記の例では、
①も②もどちらも1と出力されます。
この結果は
予想通りの結果ではないでしょうか。
では、次の例はどうでしょう。
例(その2)
int i = 0;
int j = 0;
int result = 0;
result = i++;
System.out.println(result); ...①
result = ++j;
System.out.println(result); ...②
上記の例では、
①は0
②は1
と出力されます。
なぜ?と思われた方も
いるのではないでしょうか。
陥りやすいミス
なぜこのような結果に
なるのでしょうか。
実は、インクリメント演算子は、
「例(その1)」のように、
単体で使う場合は、
前置も後置も単にオペランドに
1を加算するだけです。
※ディクリメント演算子も同様
しかし、インクリメント演算子を
他の演算子と共に使う場合は
注意が必要です。
「例(その2)」の場合、
result = i++;
は、
(result = i) + 1;
のように、
代入が行われた後に加算が行われます。
※ディクリメント演算子も同様
また、
result = ++j;
は、
result = (j + 1);
のように、
加算が行われた後に代入が行われます。
※ディクリメント演算子も同様
インクリメント演算子を
他の演算子と共に使う場合、
前置と後置では、
加算のタイミングが異なる、
ということになります。
インクリメント(ディクリメント)の
使用頻度は高い
プログラミングにおいて、
インクリメントあるいは
ディクリメントは、
使用頻度が非常に高い演算です。
特に、繰り返し処理などでは、
よく使用されます。
そのため、
この演算子を使用する際には、
・単体での使用なのか、
他の演算子と併用なのか
・他の演算子と併用の場合は、
加算のタイミングを考慮
上記の点に
注意するようにしてください。
------------------------------------------------
PS.学習&就職サポートが充実!憧れのエンジニアへ!
社会人のためのJavaスクール
------------------------------------------------