はじめに
インフラの分野でも、Iac化が進んで行くと考えています。そこで、ノウハウが体系だっているものが学び易いと考えて、Javaを学びはじめました。
今回は、ラベル (a
と b
) の役割にフォーカスしました。
public class Main {
public static void main(String[] args) {
int total = 0;
a: for (int i = 0; i < 5; i++) { // 外側のループ
b: for (int j = 0; j < 5; j++) { // 内側のループ
// i が偶数の場合、外側のループの次の反復にスキップ
if (i % 2 == 0) continue a;
// j が 3 より大きい場合、内側のループを終了
if (3 < j) break b;
// j を total に加算
total += j;
}
}
// total の値を出力
System.out.println(total);
}
}
ラベル(a
, b
)の意味と使い方
1. ラベル a
の使用(continue a;
)
ラベル a
は、外側のループ(i
に関するループ)に対応しています。continue a;
は、i
が偶数の場合に、外側のループ(i
のループ)の次の反復に進むことを意味します。
-
continue a;
は、i
が偶数(i % 2 == 0
)の場合に、外側のループの次の反復を開始させるため、内側のループ(j
のループ)はスキップされます。 - これは、
i
が偶数のときには、内側のループを無駄に実行しないようにするためです。
2. ラベル b
の使用(break b;
)
ラベル b
は、内側のループ(j
に関するループ)に対応しています。break b;
は、j
が 3 より大きくなった時に、内側のループ(j
のループ)を終了させることを意味します。
-
if (3 < j) break b;
は、j
が 4 以上の値を取った場合に、内側のループを終了させるための命令です。これにより、j
が 4 に到達する前に、内側のループを終了させます。
実行の流れ
-
外側のループ(
i
ループ) は、i = 0
からi = 4
まで実行されます。 -
内側のループ(
j
ループ) は、j = 0
からj = 4
まで実行されますが、i
が偶数の場合はcontinue a;
によってスキップされます。
実行結果の詳細
-
i = 0
のとき(偶数):-
continue a;
によって、内側のループがスキップされ、total
は加算されません。
-
-
i = 1
のとき(奇数):-
j = 0
:total += 0;
→total = 0
-
j = 1
:total += 1;
→total = 1
-
j = 2
:total += 2;
→total = 3
-
j = 3
:total += 3;
→total = 6
-
j = 4
:break b;
→ 内側のループを終了。total
の値は6
になります。
-
-
i = 2
のとき(偶数):-
continue a;
によって内側のループがスキップされ、total
は変わりません。
-
-
i = 3
のとき(奇数):-
j = 0
:total += 0;
→total = 6
-
j = 1
:total += 1;
→total = 7
-
j = 2
:total += 2;
→total = 9
-
j = 3
:total += 3;
→total = 12
-
j = 4
:break b;
→ 内側のループを終了。total
の値は12
になります。
-
-
i = 4
のとき(偶数):-
continue a;
によって内側のループがスキップされ、total
は変わりません。
-
最終的な total
の値
i = 1
と i = 3
のときに total
に加算され、最終的な値は 12 になります。
実行結果
12
まとめ
-
ラベル付き
continue
(continue a;
) は、外側のループ(i
のループ)の次の反復に進むために使用されます。- 具体的には、
i
が偶数のときに内側のループをスキップするために使います。
- 具体的には、
-
ラベル付き
break
(break b;
) は、内側のループ(j
のループ)を終了させるために使用されます。- 具体的には、
j
が 4 に達したときに内側のループを終了させます。
- 具体的には、
ラベルを使うことで、特定のループを制御することができ、ネストされたループの中で柔軟に制御フローを管理することが可能となります。