1. 概要

このクイック記事では、continueおよびbreak Javaキーワードを紹介し、それらを実際に使用する方法に焦点を当てます。

簡単に言えば、これらのステートメントを実行すると、現在の制御フローが分岐し、現在の反復でコードの実行が終了します。

2. breakステートメント

break ステートメントには、ラベルなしとラベル付きの2つの形式があります。

2.1. ラベルなしブレーク

ラベルなしステートメントを使用して、 for while 、または do-while ループ、およびswitch-caseブロックを終了できます。

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break;
    }
}

このスニペットは、5回反復することになっているforループを定義します。 ただし、counterが3の場合、if条件が真になり、breakステートメントがループを終了します。これにより、forループの終了後に続くステートメントに制御フローが転送されます。 。

ネストされたループの場合、ラベルのないbreakステートメントは、にある内部ループのみを終了します。 外側のループは実行を継続します。

for (int rowNum = 0; rowNum < 3; rowNum++) {
    for (int colNum = 0; colNum < 4; colNum++) {
        if (colNum == 3) {
            break;
        }
    }
}

このスニペットには、forループがネストされています。 colNumが3の場合、条件がtrueと評価され、breakステートメントによって内側のforループが終了します。ただし、外側のforループは反復を続けます。

2.2. breakというラベルが付いています

ラベル付きのbreakステートメントを使用して、 for while 、またはdo-whileループを終了することもできます。 ラベル付きのブレークは外側のループを終了します。

終了すると、制御フローは外部ループの終了直後にステートメントに転送されます。

compare: 
for (int rowNum = 0; rowNum < 3; rowNum++) {
    for (int colNum = 0; colNum < 4; colNum++) {
        if (rowNum == 1 && colNum == 3) {
            break compare;
        }
    }
}

この例では、外側のループの直前にラベルを導入しました。 rowNum が1に等しく、 colNum が3に等しい場合、if条件はtrueと評価され、breakステートメントは終了します。外側のループ。

次に、制御フローは、外側のforループの終了に続くステートメントに転送されます。

3. continueステートメント

continue ステートメントにも、ラベルなしとラベル付きの2つの形式があります。

3.1. ラベルなし続行

ラベルのないステートメントを使用して、 for while 、またはdo-whileループの現在の反復で残りのステートメントの実行をバイパスできます。 内側のループの最後までスキップしてループを続行します

int counter = 0;
for (int rowNum = 0; rowNum < 3; rowNum++) {
    for (int colNum = 0; colNum < 4; colNum++) {
        if (colNum != 3) {
            continue;
        }
        counter++;
    }
}

このスニペットでは、 colNum が3に等しくない場合は常に、ラベルのない continue ステートメントが現在の反復をスキップし、その反復での変数counterの増分をバイパスします。 。 ただし、外側のforループは繰り返し続けます。 したがって、 counter の増分は、colNumが外側のforループの各反復で3に等しい場合にのみ発生します。

3.2. ラベル付き続行

外側のループをスキップするラベル付きのcontinueステートメントを使用することもできます。スキップすると、制御フローが外側のループの最後に転送され、外側のループの反復が効果的に続行されます。

int counter = 0;
compare: 
for (int rowNum = 0; rowNum < 3; rowNum++) {
    for (int colNum = 0; colNum < 4; colNum++) {
        if (colNum == 3) {
            counter++;
            continue compare;
        }
    }
}

外側のループの直前にラベルを導入しました。 colNum が3に等しい場合は常に、変数counterがインクリメントされます。 ラベル付けされたcontinueステートメントにより、外側のforループの反復がスキップされます。

制御フローは、外側の for ループの最後に転送され、次の反復に進みます。

4. 結論

このチュートリアルでは、キーワードbreakおよびcontinueをJavaの分岐ステートメントとして使用するさまざまな方法を見てきました。

この記事で紹介する完全なコードは、GitHubから入手できます。