Javaのfor文の初期化と更新はひとつの変数を宣言し初期化し更新するだけでなく、複数の変数に対しても同じことができる。
その書き方を見てみよう。
目次
初期化と更新の使い方
初期化での変数宣言と代入を使う
初期化の書き方はふたつある。ひとつはローカル変数の宣言と代入だ。
型 変数名1[= 初期値], 変数名2[= 初期値], … , 変数名n[= 初期値]
たとえば、for文で使う3つのint型の変数を宣言する場合はカンマで区切って次のように書く。変数を宣言することに加えて、それぞれに初期値を代入することができる。
1 2 3 |
for (int x = 0, y = 1, z = 2; x < 10; x ++,) { …. } |
初期化で式を使う
また、初期化に式も書ける。初期化に複数の式を書くときは、カンマで区切って並べる。
これが、基本的な式の書き方だ。
式1, 式2 … 式n
たとえば、既に宣言された変数の値を初期化してfor文で使いたいなら、次のように書ける。
1 2 3 4 5 |
int a = 0, b = 0, c = 0; …. for (a = 1, b ++, c = y + 2; a < 10; a ++,) { …. } |
注意しなければならないのは、ローカル変数の宣言と式の両方を初期化に書くことはできない。
では、更新についても書き方を見てみよう。更新に複数の式を書くときはカンマで区切って並べる。
更新
基本的な書き方はこうだ。
式1, 式2 … 式n
for (int x = 0, y = 1, z = 2; x < 10; x ++, y = 1, z = x + 1) {
….
}
複数の変数を扱う初期化のサンプルプログラム
このサンプルプログラムは、for文の繰り返しの中で初期化にある3つのローカル変数宣言と式がどのような働きをするかを示している。式と値の変化を比較して確認してみよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class ComplexForInitialization { public static void main (String[] args){ System.out.println("[1] 初期化:x = 1, y = 2, z = 3"); for(int x = 1, y = 2, z = 3; x <= 5; x ++){//[2] System.out.print("[3]-" + x + "," + y + "," + z + " "); } System.out.println("");//[4] int a = 0, b = 0, c = 0;//[5] System.out.println("[6] 初期化:a = 1, b ++, c = a + 2"); for (a = 1, b ++, c = a + 2; a < 5; a ++) {//[7] System.out.print("[8]-" + a + "," + b + "," + c + " "); } } } |
実行結果
1 2 3 4 |
[1] 初期化:x = 1, y = 2, z = 3 [3]-1,2,3 [3]-2,2,3 [3]-3,2,3 [3]-4,2,3 [3]-5,2,3 [6] 初期化:a = 1, b ++, c = a + 2 [8]-1,1,3 [8]-2,1,3 [8]-3,1,3 [8]-4,1,3 |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] 「初期化:x = 1, y = 2, z = 3」を表示する。
- [2] 変数x, y, zを宣言し、xに1、yに2、zに3の初期値を代入する。xを1から5までインクリメントする。
- [3] x, y, zの値を表示する。
- [4] 改行する。
- [5] 変数a, b, cを宣言し、aに0、bに0、cに0の初期値を代入する。
- [6] 「初期化:a = 1, b ++, c = a + 2」を表示する。
- [7] aに1を代入する。bをインクリメントする。a + 2をcに代入する。aを1から5までインクリメントする。
- [8] a, b, cの値を表示する。
- [9] 改行する。
複数の変数を扱う更新のサンプルプログラム
このサンプルプログラムは、for文の繰り返しの中で更新にある3つの式がどのようなそれぞれの値を変化させるかを表示する。式と値の変化を比較して確認してみよう。
1 2 3 4 5 6 7 8 |
public class ComplexForUpdate { public static void main (String[] args){ System.out.println("更新:x ++, y = 1, z = x + 1");//[1] for (int x = 0, y = 1, z = 2; x < 5; x ++, y = 1, z = x + 1) {//[2] System.out.print("[3]-" + x + "," + y + "," + z + " "); } } } |
実行結果
1 2 |
初更新:x ++, y = 1, z = x + 1 [3]-0,1,2 [3]-1,1,2 [3]-2,1,3 [3]-3,1,4 [3]-4,1,5 |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] 「更新:x ++, y = 1, z = x + 1"」を表示する。
- [2] for文初期化:変数x, y, zを宣言し、xに0、yに1、zに2の初期値を代入する。
- [2] for文条件:x < 5がtrueであれば[3]に進み、繰り返しを続ける。そうでなければ、繰り返しを終わる。
- [3] x, y, zの値を表示する。
- [2] for文更新:xをインクリメントする。yに1を代入する。zにx + 1を代入する。そして、[2] for文条件に戻り繰り返しを続ける。
まとめ
Javaのfor文の変数初期化について詳しいところをまとめてきた。少々複雑になるが、意味はお分かりになっただろうか?
出番は少ないかもしれないが、できるということだけでも知っておくと良いだろう。