インクリメントとは?インクリメント演算子の位置による違い・インクリメントの活用例

- システム
エンジニア - Javaにおけるインクリメントとはどのようなものなのでしょうか。
- プロジェクト
マネージャー - インクリメントは英語で増加や増大を示す単語です。
インクリメントとは?
今回は、Javaプログラミングにおけるインクリメントについて使用例を交えて紹介します。
まず、インクリメントの意味を説明します。インクリメントは英語で増加や増大を示す単語ですが、プログラミングにおいてはある変数を1増加させる操作のことを指します。ちなみに、逆にある変数を1減少させる操作をデクリメントと呼びます。
Javaにおけるインクリメントの方法
では、Javaにおけるインクリメントの方法を紹介します。
Javaには変数を1増加させる、インクリメント専用の演算子が存在します。それがインクリメント演算子「++」です。使用例となるソースコードを以下に示します。
1
2
3
4
5
6
7
8
9
10
|
public class Main {
public static void main(String[] args) {
int i = 1;
System.out.println("iの値 : " + i);
i++;
System.out.println("iの値 : " + i);
++i;
System.out.println("iの値 : " + i);
}
}
|
実行結果は以下のようになります。
1
2
3
|
iの値 : 1
iの値 : 2
iの値 : 3
|
インクリメント演算子は変数の前もしくは後に記述することでその変数が1増加します。記述場所の前後による違いは次項で説明します。上記の例では、変数iがインクリメントによって1ずつ増加しています。
なお、上記のインクリメント例は分かりやすい代入式にすると「i = i + 1」や「i += 1」とほぼ同等になります。
インクリメント演算子の位置による違い
Javaのインクリメント演算子は変数の前後どちらに記述しても良く、どちらでも変数を1増加させます。では、位置による差異は何があるのでしょうか。
インクリメント演算子は位置により、その式の評価が異なります。具体的な例となるソースコードを以下に示します。
1
2
3
4
5
6
7
8
9
10
|
public class Main {
public static void main(String[] args) {
int i = 1;
System.out.println("iの値 : " + i);
System.out.println("i++の値 : " + (i++));
System.out.println("iの値 : " + i);
System.out.println("++iの値 : " + (++i));
System.out.println("iの値 : " + i);
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
|
iの値 : 1
i++の値 : 1
iの値 : 2
++iの値 : 3
iの値 : 3
|
「i++」と変数の後に演算子を記述した場合、その式の評価は1増加する前の値になります。この演算子を後に記述する方式を後置インクリメントと呼びます。
対して、「++i」と変数の前に演算子を記述した場合、その式の評価は1増加した後の値になります。この演算子を前に記述する方式を前置インクリメントと呼びます。
インクリメントの活用例
ここまでJavaにおけるインクリメントの方法について紹介しました。ここからは、インクリメントをJavaプログラミングにおいて実際どのように使用するのか、その活用例を簡単なプログラムとともに紹介します。
カウンタへの活用
プログラミングにおいて、何かの個数や回数を数える変数をカウンタと呼びます。カウンタを特定の契機で増加させるのにインクリメントを利用できます。ここでは例として、数値のコレクション内に1がいくつ含まれているかを返すJavaプログラミングのメソッドを紹介します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import java.util.Arrays;
import java.util.List;
public class Main2 {
public static void main(String[] args) {
List<integer> a = Arrays.asList(1, 2, 1, 3);
List<integer> b = Arrays.asList(1, 2);
List<integer> c = Arrays.asList(0);
System.out.println("a内にある1の個数 : " + countOne(a));
System.out.println("b内にある1の個数 : " + countOne(b));
System.out.println("c内にある1の個数 : " + countOne(c));
}
// コレクション内の1の個数を返すメソッド
private static int countOne(List<Integer> list_i) {
Integer i = Integer.valueOf(1);
int cnt = 0;
for (Integer n : list_i) {
if (i.equals(n)) cnt++; // 数値が1であればcntをインクリメント
}
return cnt;
}
}</integer></integer></integer>
|
実行結果は以下のようになります。
1
2
3
|
a内にある1の個数 : 2
b内にある1の個数 : 1
c内にある1の個数 : 0
|
countOneメソッドは引数で渡されるリスト内に存在する1の個数を返すものです。この場合、リスト内の数値を順に調べ、1と合致した場合にカウンタをインクリメントすることで最終的に1の個数を取得しています。
このように、特定の条件を満たすものの個数や特定の操作の回数を知りたい場合にインクリメントを活用できます。
ループへの活用
プログラミングにおける制御構造の1つにループ処理(繰り返し処理)が存在します。このループ処理において、特定の回数だけ繰り返したい場合にもインクリメントが使われます。
まず、ループを繰り返した回数を数えるカウンタを用意します。このカウンタをループカウンタと呼び、ループ処理が行われるたびにこのカウンタをインクリメントします。そして、これが特定の値を超えた時にループを脱出するよう制御することで、特定回数のループを実現できます。
Javaではforとwhileによりループを形成できます。それぞれの例となるソースコードを以下に示します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class Main3 {
public static void main(String[] args) {
System.out.print("forループ iの値 : ");
for (int i = 0; i < 10; i++) {
System.out.print(" " + i);
}
System.out.println();
System.out.print("whileループ1 iの値 : ");
int i = 0;
while (i < 10) {
System.out.print(" " + i);
i++;
}
System.out.println();
System.out.print("whileループ2 iの値 : ");
i = 0;
while ((i++) < 10) {
System.out.print(" " + i);
}
}
}
|
実行結果は以下のようになります。
1
2
3
|
forループ iの値 : 0 1 2 3 4 5 6 7 8 9
whileループ1 iの値 : 0 1 2 3 4 5 6 7 8 9
whileループ2 iの値 : 1 2 3 4 5 6 7 8 9 10
|
forループでは、ループカウンタiに対して0を初期値として繰り返しごとにインクリメントしています。そして、条件「iが10未満」を満たさなくなったタイミングでループを脱出します。結果、ループ回数10回のループ処理となります。
whileループ1、whileループ2も基本的には同じ構造です。ただし、whileループ2はインクリメントのタイミングがループ処理内の先頭にあるため、ループカウンタの値は0~9ではなく1~10となります。
whileの条件内でインクリメント演算子を使用する場合の注意点
先ほどのソースコードにある「i++」を「++i」に変更すると、実行結果は以下のようになります。
1
2
3
|
forループ iの値 : 0 1 2 3 4 5 6 7 8 9
whileループ1 iの値 : 0 1 2 3 4 5 6 7 8 9
whileループ2 iの値 : 1 2 3 4 5 6 7 8 9
|
whileループ2ではループカウンタの値が1~9となり回数が9回となっています。これは条件チェックの際に前置インクリメントでは1増加した後の値が使用されているためです。
インクリメントを条件内で使用する場合はループ回数が自分の期待した回数になっているか確認するようにしましょう。
- システム
エンジニア - インクリメントの概要や活用例などが理解できました。
- プロジェクト
マネージャー - Javaプログラミングにおける変数の操作をする際の参考にしてみてください。
インクリメントは変数を1増加させる操作
インクリメントについて、Javaでの使用方法と活用例をソースコードとともに紹介しました。Javaプログラミングにおける変数の操作として、ぜひ参考にしてみてください。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)