2020.03.23

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 );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Increment1.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Increment1.java

実行

C:\talavax\javasample>java Increment1

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 );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Decrement1.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Decrement1.java

実行

C:\talavax\javasample>java Decrement1

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 );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Increment2.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Increment2.java

実行

C:\talavax\javasample>java Increment2

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 );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Decrement2.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Decrement2.java

実行

C:\talavax\javasample>java Decrement2

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 );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Increment3.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Increment3.java

実行

C:\talavax\javasample>java Increment3

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 );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Decrement3.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Decrement3.java

実行

C:\talavax\javasample>java Decrement3

Decrement3.javaの出力結果

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

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

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

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

メソッドインクリメント演算子が付いた変数を渡すソースコードの例です。

Increment4.java

001
002
003
004
005
006
007
008
009
010
011
public class Increment4 {
	public static void main( String[] args ) {
		int a, b;

		a = 1;
		System.out.println( ++a );

		b = 1;
		System.out.println( b++ );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Increment4.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Increment4.java

実行

C:\talavax\javasample>java Increment4

Increment4.javaの出力結果

2
1

printlnメソッドに「++a」を渡すと、aに1を足したa=2の値が出力されます。

aの前の「++」(インクリメント)があるので、aに1を足した後のaの値がprintlnメソッドに渡されるためです。

printlnメソッドに「b++」を渡すと、b=1の値が出力されます。

bの後ろに「++」(インクリメント)があるので、bをprintlnメソッドに渡した後にbに1を足すためです。

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

メソッドデクリメント演算子が付いた変数を渡すソースコードの例です。

Decrement4.java

001
002
003
004
005
006
007
008
009
010
011
public class Decrement4 {
	public static void main( String[] args ) {
		int a, b;

		a = 1;
		System.out.println( --a );

		b = 1;
		System.out.println( b-- );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Decrement4.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Decrement4.java

実行

C:\talavax\javasample>java Decrement4

Decrement4.javaの出力結果

0
1

printlnメソッドに「--a」を渡すと、aから1を引いたa=0の値が出力されます。

aの前の「--」(デクリメント)があるので、aから1を引いたaの値がprintlnメソッドに渡されるためです。

printlnメソッドに「b--」を渡すと、b=1の値が出力されます。

bの後ろに「--」(デクリメント)があるので、bをprintlnメソッドに渡した後にbから1を引くためです。

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

char型変数インクリメントするソースコードの例です。

Increment5.java

001
002
003
004
005
006
007
008
009
010
011
public class Increment5 {
	public static void main( String[] args ) {
		char c;

		c = 'A';

		++c;

		System.out.println( c );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Increment5.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Increment5.java

実行

C:\talavax\javasample>java Increment5

Increment5.javaの出力結果

B

char型は1文字を扱う変数ですがインクリメントすることができます。

1つの文字は、文字コードと呼ばれる数字で表されるのでint型short型のような整数型の変数と同じようにインクリメントが可能です。

このソースコードでは'A'をインクリメントして'B'にしています。

'A'を表す文字コードに1を足した文字コードが'B'なので、この結果になります。

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

char型変数デクリメントするソースコードの例です。

Decrement5.java

001
002
003
004
005
006
007
008
009
010
011
public class Decrement5 {
	public static void main( String[] args ) {
		char c;

		c = 'Z';

		--c;

		System.out.println( c );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Decrement5.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Decrement5.java

実行

C:\talavax\javasample>java Decrement5

Decrement5.javaの出力結果

Y

char型は1文字を扱う変数ですがデクリメントすることができます。

このソースコードでは'Z'をデクリメントして'Y'にしています。

以上です。

関連コンテンツ

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

2022.09.10

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

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

2020.03.23

各種データ型の変数に値を代入しない場合、変数の初期値は?

2024.01.18

ソースコードの中の「a = a + 1」について説明しています。

2024.01.20

大文字/小文字のアルファベットを出力する方法を詳しく解説しています。

2024.02.01

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

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

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

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

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

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

2020.03.23

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

2020.03.23

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

2022.08.29

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

2016.01.14

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

数値しか扱えないコンピュータでどうやって文字を記憶、処理しているのかを説明しています。興味のある方は、記事をご覧ください。

2020.03.23

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

2019.09.03

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

2020.05.07

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

2020.08.25

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

2023.04.23

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

2023.04.23

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

2012.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

広告