初心者向けのJava講座です。一緒にJavaを勉強しませんか?
はじめてのJava入門初心者向けのJava講座 |
インクリメント、デクリメント演算子
インクリメント演算子 指定された変数の値に1加算する。
デクリメント演算子 指定された変数の値に1減算する。
これは、どういうことなんでしょう!
具体的に説明していきます。
たとえば、変数 x に 1を加算する方法を考えてみてください。
複合代入演算子のところでも説明しましたが、
x = x + 1; もしくは x += 1; という考え方がありました。
でも、もう一つ ++x という書き方があります。
これが、インクリメント演算子 です。
これが、デクリメント演算子です。
わかりやすく表にすると以下のようになります。
演算子 |
使用例 |
意味 |
複合代入演算子 での記述 |
算術演算子 での記述 |
++ |
x++ または ++x |
xに1を加える |
x +=1 |
x = x+1 |
-- |
x-- または --x |
xに1を引く |
x -=1 |
x = x-1 |
上の表のところの使用例を見てみると x++ または ++xと書かれています
この2つの記述順序の違いで処理の内容がまったく異なるからです。
++xのようにオペランドの前に++と置くことを前置インクリメント演算子と呼びます
この2つの演算子の違いは
y = x++;y = ++x;
の式を例に考えて見ましょう。
y = x++;
は先にyに値を代入してから、その後に xの値が1加算されます。y =++x;
は先にxの値が1加算されたあとにyに代入されます。これは、--(デクリメント演算子)でも同様で、
x--を後置デクリメント、 --xを前置デクリメントと呼びます
サンプルプログラム(Sample16.java)
class Sample16{ public static void main(String args[]){
int x = 10;
//これは前置インクリメントのサンプルです int y = ++x; System.out.println("x = " + x); System.out.println("y = " + y); } }
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
コンパイル・実行してみます。
サンプルプログラム(Sample16_1.java)
class Sample16_1{ public static void main(String args[]){
int x = 10;
//これは後置インクリメントのサンプルです int y = x++; System.out.println("x = " + x); System.out.println("y = " + y); } }
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
コンパイル・実行してみます。
今、Sample16.javaとSample16_1.javaをコンパイルして実行したところ
yの値が違うことがわかります。
ここが、前置インクリメントと後置インクリメントの処理の違いだということがわかります。
もう一度説明しますが、まずSample16.javaの方はxの前にインクリメントしています。
すなわちxの値に1加算された状態でyに代入されてます。
よって 10 の値に1が加算され11が出力されました。
一方のSample16_1.javaのほうはxの後にインクリメントしています。
まず最初にyにxを代入した後に1加算されてます。
よって、yはまずxの値が代入されるわけだから、Sample16_1.javaでは
yに xの値である10が代入された後にxの値に1加算されます。
したがって、y は10 xは11が出力されます。
この前置 と 後置 の意味はしっかり把握しておいてください。
では、まとめとしてインクリメント、デクリメント演算子のプログラムを作りましょう。サンプルプログラム(Sample16_3.java)
class Sample16_3{ public static void main(String args[]){
int a = 0,b = 0; int x = 10, y = 10; System.out.println("演算される前の値"); System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("------------------"); System.out.println("インクリメント演算子"); a = x++; b = ++y; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("------------------"); System.out.println(" デクリメント演算子"); a = x--; b = --y; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("x = " + x); System.out.println("y = " + y);
} }
プログラムをコピーする場合すべて選択をクリックしてください。
コンパイル・実行してみます。どうですか?
違いがわかりましたか
ただ、同じ変数に対するインクリメント、デクリメントを複数扱うことはできないので 注意してください