Javaプログラミング

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

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

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

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

演算 演算子
インクリメント(1足す) ++
デクリメント(1引く) --

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

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

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

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

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

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

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

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

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

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

インクリメントの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のソースコードを使って詳しく解説しています。

2019.09.03

広告