ラベルとは
ラベルはソースコード内に記述できる目印で、 ラベルを指定すると、continue文やbreak文で特定の箇所に移動することができます。 主に繰り返しのネスティング処理で利用します。
ラベルについて
ラベルは以下の箇所で使用できます。
- コードブロック
- if文やswitch文
- 式
- 代入
- return文
- tryブロック
- throw文
ラベルの構文
- (ラベル構文例)
-
labelName: for (initialization; condition; increment) { // ループの本体 }
※「labelName」に任意の有効な識別子を指定します。
ラベルサンプル
実際にラベルを使用したサンプルを見てみましょう。
ネストされたループからの脱出
複数のループがネストされている場合、特定のループから脱出したい場合があります。
ラベル付きbreak文を使用すると、これを簡単に実現できます。
- (例)i == 1かつ j == 1の時に外側のループ(outerLoop)から完全に脱出する
-
outerLoop: for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (i == 1 && j == 1) { break outerLoop; } System.out.println("i: " + i + ", j: " + j); } }
特定のループの次の反復へのスキップ
continue文とラベルを組み合わせることで、ネストされたループの特定の反復をスキップすることができます。
- (例)i == 1かつ j == 1の時に外側のループの次の反復にスキップする
-
outerLoop: for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (i == 1 && j == 1) { continue outerLoop; } System.out.println("i: " + i + ", j: " + j); } }
ラベル補足
- ラベルはfor文やwhile文だけでなく、ほとんどのJavaステートメントに付けることができます。
- ラベル付きステートメントは過度に使用すると、コードの可読性を損なう可能性があります。必要な場合にのみ使用することをお勧めします。
- ローカル変数宣言文にはラベルを付けることができません。
コメント