Javaプログラミング ~陥りやすいミス①~

Javaプログラミング ~陥りやすいミス①~

今回から数回に渡り、
「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);

のように、

加算が行われた後に代入が行われます。
※ディクリメント演算子も同様

インクリメント演算子を
他の演算子と共に使う場合、

前置と後置では、
加算のタイミングが異なる、
ということになります。

インクリメント(ディクリメント)の
使用頻度は高い

プログラミングにおいて、
インクリメントあるいは
ディクリメントは、
使用頻度が非常に高い演算です。

特に、繰り返し処理などでは、
よく使用されます。

kohsaka

そのため、
この演算子を使用する際には、

・単体での使用なのか、
 他の演算子と併用なのか

・他の演算子と併用の場合は、
 加算のタイミングを考慮

上記の点に
注意するようにしてください。
————————————————
PS.学習&就職サポートが充実!憧れのエンジニアへ!
社会人のためのJavaスクール
————————————————