Javaプログラミング

インクリメント・デクリメント演算子

インクリメント・デクリメント演算子

インクリメント演算子とは、整数型の変数に1を足す(1増加)もので、半角のプラス'+'を2つ並べた'++'で表します。

デクリメント演算子とは、整数型の変数から1を引く(1減少)もので、半角のマイナス'-'を2つ並べた'--'で表します。

表にまとめると以下のようになります。

演算 演算子 備考
インクリメント(1足す) ++ ++iとi++は、
i=i+1と同じ
デクリメント(1引く) -- --iはi--は、
i=i-1と同じ

インクリメント演算子デクリメント演算子は、変数の前に書く方法と、後ろに書く方法の2つがあります。

前に書く方法は「前置」、後ろに書く方法は「後置」と呼ばれます。使い方は以下のとおりです。

	// 前置インクリメント
	++変数

変数に1を足しています。

	// 後置インクリメント
	 変数++

変数に1を足しています。

	// 前置デクリメント
	--変数

変数から1を引いています。

	// 後置デクリメント
	 変数--

変数から1を引いています。

インクリメント・デクリメントの利用例

インクリメントデクリメントは、for文の変化式で利用されます。特にインクリメント「++」が利用されます。

以下は、for文の変化式に「++i」(インクリメント)を使ったソースコードの例です。変数iは0から9まで1ずつ変化していきます。

    for ( int i = 0; i < 10; ++i ) {
           :
    }

以下は、for文の変化式に「--i」(デクリメント)を使ったソースコードの例です。変数iは9から0まで-1ずつ変化していきます。

    for ( int i = 9; i >= 0; --i ) {
           :
    }

インクリメントのJavaソースコード その1

前置と後置でインクリメントを行うソースコードの例です。

Increment1.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
public class Increment1 {
	public static void main( String[] args ) {
		// 変数定義
		int a;

		// 前置インクリメント
		a = 0;
		++ a;
		System.out.println( "前置インクリメント a=" + a );

		// 後置インクリメント
		a = 0;
		a ++;
		System.out.println( "後置インクリメント a=" + a );
	}
}

Increment1.javaの出力結果

前置インクリメント a=1
後置インクリメント a=1

前置と後置でインクリメントした値がどちらも同じa=1になっています。どちらもa=0に1が足されています。

デクリメントのJavaソースコード その1

前置と後置でデクリメントを行うソースコードの例です。

Decrement1.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
public class Decrement1 {
	public static void main( String[] args ) {
		// 変数定義
		int a;

		// 前置デクリメント
		a = 0;
		-- a;
		System.out.println( "前置デクリメント a=" + a );

		// 後置デクリメント
		a = 0;
		a --;
		System.out.println( "後置デクリメント a=" + a );
	}
}

Decrement1.javaの出力結果

前置デクリメント a=-1
後置デクリメント a=-1

前置と後置でデクリメントした値がどちらも同じa=-1になっています。どちらもa=0から1が引かれています。

インクリメントのJavaソースコード その2

前置と後置で違う値になるようにしたソースコードです。

Increment2.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
public class Increment2 {
	public static void main( String[] args ) {
		// 変数定義
		int a, b;

		// 前置インクリメント
		a = 0;
		b = ++ a;
		System.out.println( "前置インクリメント b=" + b );

		// 後置インクリメント
		a = 0;
		b = a ++;
		System.out.println( "後置インクリメント b=" + b );
	}
}

Increment2.javaの出力結果

前置インクリメント b=1
後置インクリメント b=0

前置と後置でインクリメントした値が違うことがわかります。

これは、前置の方がaに1を足した値をbに代入しているのに対して、後置の方はaの値をbに代入した後でaに1を足すことによって起こる違いです。

デクリメントのJavaソースコード その2

前置と後置で違う値になるようにしたソースコードです。

Decrement2.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
public class Decrement2 {
	public static void main( String[] args ) {
		// 変数定義
		int a, b;

		// 前置デクリメント
		a = 0;
		b = -- a;
		System.out.println( "前置デクリメント b=" + b );

		// 後置デクリメント
		a = 0;
		b = a --;
		System.out.println( "後置デクリメント b=" + b );
	}
}

Decrement2.javaの出力結果

前置デクリメント b=-1
後置デクリメント b=0

前置と後置でデクリメントした値が違うことがわかります。

これは、前置の方がaから1を引いた値をbに代入しているのに対して、後置の方はaの値をbに代入した後でaから1を引くことによって起こる違いです。

インクリメントのJavaソースコード その3

Increment3.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
public class Increment3 {
	public static void main( String[] args ) {
		// 変数定義
		int a, b;
		int n[] = new int[ 3 ];

		n[ 0 ] = 2;
		n[ 1 ] = 9;
		n[ 2 ] = 8;

		// 前置インクリメント
		a = 0;
		b = n[ ++ a ];
		System.out.println( "前置インクリメント b=" + b );

		// 後置インクリメント
		a = 0;
		b = n[ a ++ ];
		System.out.println( "後置インクリメント b=" + b );
	}
}

Increment3.javaの出力結果

前置インクリメント b=9
後置インクリメント b=2

前置の方はaに1を足した値が添え字になります。この例ではa=1が添え字になるのでb=n[1]が代入されます。

後置の方はaが添え字になります。この例ではa=0が添え字になるのでb=n[0]が代入され、代入後にaに1が足されます。

デクリメントのJavaソースコード その3

Decrement3.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
public class Decrement3 {
	public static void main( String[] args ) {
		// 変数定義
		int a, b;
		int n[] = new int[ 3 ];

		n[ 0 ] = 2;
		n[ 1 ] = 9;
		n[ 2 ] = 8;

		// 前置デクリメント
		a = 1;
		b = n[ -- a ];
		System.out.println( "前置デクリメント b=" + b );

		// 後置デクリメント
		a = 1;
		b = n[ a -- ];
		System.out.println( "後置デクリメント b=" + b );
	}
}

Decrement3.javaの出力結果

前置デクリメント b=2
後置デクリメント b=9

前置の方はaから1を引いた値が添え字になります。この例ではa=0が添え字になるのでb=n[0]が代入されます。

後置の方はaが添え字になります。この例ではa=1が添え字になるのでb=n[1]が代入され、代入後にaから1が引かれます。

関連コンテンツ

Javaの学習に役立つソースコードを紹介しています。是非、ご覧ください。

2022.09.10

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラミングで使う変数って何?

2020.03.23

自然数と整数って何が違う?

2020.03.23

処理を繰り返すために使用するfor文について解説しています。

2020.03.23

for文で変数名iがよく使われる理由について説明しています。興味のある方は是非。

2022.08.29

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

同じ型の変数(データ)を複数個まとめて管理するデータの持ちかたがあります。これが配列です。くわしくは、記事をご覧ください。

2016.01.14

配列に格納されている値の順番を逆にする反転処理を行うプログラムを紹介しています。Javaのソースコードを使って詳しく解説しています。

2019.09.03

1から6のサイコロの目が出る確率を割り出すプログラムの作りかたを解説しています。

2020.05.07

2つのサイコロを振って同じ目が出る確率を割り出すプログラムの作り方を解説しています。

2020.08.25

与えられた整数の桁数を求めるプログラムの作り方を説明します。for文を使っています。

2023.04.23

与えられた整数の桁数を求めるプログラムの作り方を説明します。while文を使っています。

2023.04.23

画像の上下を入れ替える方法を解説しています。

20120.10.21

関数f(x)が与えられたときf(x)=0となるxを数値計算の反復によって求める方法を詳しく解説しています。

2019.05.22

数値微分を使ったニュートン法で平方根を計算する方法を紹介しています。興味のあるかたは是非ご覧ください。

2019.05.23

画像の左右を入れ替える方法をソースコードを使って詳しく解説しています。

2020.10.06

できるだけ隙間がなくなるように円を並べて出来る模様の画像を作成する方法を紹介。

2019.06.17

ソート(並び替え)アルゴリズムの1つであるクイックソートについて詳しく解説しています。Javaのソースコード付きです。

2019.09.06

広告